# installer inspircd et anope avec docker sur linux

description : comment installer inspircd et anope avec docker sur linux
categories : Sysadmin;
tags : Linux; Docker; Freec0ding;

intro

Je vais détailler ici comment installer inspircd et anope avec docker sur linux.

ssl

voir : comment générer mes certificats ssl sur linux avec certbot et ovh.

anope database

Pour installer la base de données, voir : comment installer mysql et postgresql avec docker sur linux.

Je crée la base de données pour anope :

sudo docker exec -it mysql-container bash
mysql -u root -p
1
2
3
4
CREATE DATABASE IF NOT EXISTS anopedb;
CREATE USER 'anope'@'%' IDENTIFIED BY 'example-password';
GRANT ALL PRIVILEGES ON anopedb.* TO 'anope'@'%';
EXIT;

irc-docker-compose

Je crée les dossiers utilisés pour les containers inspircd-container et anope-container :

1
2
sudo mkdir -p /srv/irc/inspircd/conf /srv/irc/inspircd/log \
    /srv/irc/anope/conf /srv/irc/anope/data

Le fichier irc-docker-compose.yml :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
volumes:
  inspircd_conf:
    name: inspircd-conf
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /srv/irc/inspircd/conf

  inspircd_log:
    name: inspircd-log
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /srv/irc/inspircd/log

  anope_conf:
    name: anope-conf
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /srv/irc/anope/conf

  anope_data:
    name: anope-data
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /srv/irc/anope/data
  
  irc_ssl:
    name: irc-ssl
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /etc/letsencrypt

networks:
  irc_network:
    name: irc-network

  sql_network:
    name: sql-network
    external: true

services:
  inspircd:
    image: inspircd/inspircd-docker:latest
    container_name: inspircd-container
    restart: always
    volumes:
      - inspircd_conf:/inspircd/conf
      - inspircd_log:/inspircd/logs
      - irc_ssl:/etc/letsencrypt
    networks:
      - irc_network
    ports:
      - '6697:6697'
    env_file:
      - inspircd.env

  anope:
    image: anope/anope:latest
    container_name: anope-container
    restart: always
    volumes:
      - anope_conf:/anope/conf
      - anope_data:/data
    networks:
      - irc_network
      - sql_network
    env_file:
      - anope.env

Mon fichier inspircd.env :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
INSP_NET_SUFFIX=".freec0ding.dev"
INSP_NET_NAME="freec0ding.dev"
INSP_SERVER_NAME="irc.freec0ding.dev"
INSP_ADMIN_NAME="sysc4ll"
INSP_ADMIN_NICK="sysc4ll"
INSP_ADMIN_EMAIL="hello@sysc4ll.sh"
INSP_ENABLE_DNSBL="yes"

INSP_OPER_NAME="sysc4ll"
INSP_OPER_PASSWORD_HASH="DRY66hP/GJUy+6bxU2LYcQfLHZAclfbpHA2x81Zk14s\$r0TfEsLnCmTcFOS6Dbw1ZB4xXsF1mb/Sy/Of+bPJIqY"
INSP_OPER_HOST="*@*"
INSP_OPER_HASH="hmac-sha256"
INSP_OPER_SSLONLY="yes"

INSP_SERVICES_NAME="services.freec0ding.dev"
INSP_SERVICES_IPADDR="anope"
INSP_SERVICES_HIDDEN="no"
INSP_SERVICES_PASSWORD="example-password"

INSP_TLS_CN="irc.freec0ding.dev"
INSP_TLS_MAIL="contact@freec0ding.dev"
INSP_TLS_UNIT="freec0ding.dev"
INSP_TLS_ORG="freec0ding.dev"
INSP_TLS_LOC=""
INSP_TLS_STATE="france"
INSP_TLS_COUNTRY="fr"

Mon fichier anope.env :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
ANOPE_SERVICES_NAME="services.freec0ding.dev"
ANOPE_SERVICES_VHOST="services.freec0ding.dev"
ANOPE_UPLINK_IP="inspircd"
ANOPE_UPLINK_PORT="7000"
ANOPE_UPLINK_PASSWORD="example-password"

ANOPE_SQL_ENGINE="mysql"
ANOPE_MYSQL_DB="anopedb"
ANOPE_MYSQL_HOST="mysql"
ANOPE_MYSQL_PORT="3306"
ANOPE_MYSQL_USER="anope"
ANOPE_MYSQL_PASSWORD="example-password"
ANOPE_SQL_LIVE="yes"

docker up

Je crée les containers inspircd-container et anope-container :

sudo docker-compose -p irc -f ./irc-docker-compose.yml up -d

config

Je sauvegarde les fichiers de config /srv/irc/inspircd/conf/inspircd.conf et /srv/irc/inspircd/conf/modules.conf

1
2
3
4
5
sudo cp /srv/irc/inspircd/conf/inspircd.conf \
/srv/irc/inspircd/conf/inspircd.conf.orig

sudo cp /srv/irc/inspircd/conf/modules.conf \
/srv/irc/inspircd/conf/modules.conf.orig

Je configure inspircd en éditant le fichier /srv/irc/inspircd/conf/modules.conf :

1
2
3
4
5
6
7
8
9
<module name="md5">
<module name="cloaking">
<cloak mode="full"
       key="changeme" # openssl rand -base64 30
       prefix="net-"
       ignorecase="no">

<module name="conn_join">
<autojoin channel="#home">

Je restart inspircd :

sudo docker restart inspircd-container

J'enregistre mon pseudo :

/MSG nickserv register example-password hello@sysc4ll.sh

J'enregistre le salon #home :

/MSG chanserv register #home

end

Le 15 avril 2024, le container anope n'attend pas le container mysql pour démarrer.
Il démarre sans base de données.

J'ai essayé plusieurs outils genre wait4x mais sans succès.

Au reboot du serveur et après le démarrage du container mysql, je suis donc obligé de restart le container anope avec la commande
"sudo docker restart anope-container" pour qu'il prenne en charge la base de données.