L'affaire est dans le sac

L'affaire est dans le sac

J’utilise avec plaisir Framabag depuis de nombreuses années mais avec la fermeture prochaine du service, c’est l’occasion d’installer ma propre instance Wallabag.

Wallabag est une solution libre de lecture de page web en différée à l’image de Pocket. Je l’utilise principalement pour faire de la veille techno et pour archiver les articles les plus intéressants. Vous pouvez souscrire à l’offre SAAS ou installer votre propre instance. Il existe également une application Android sur Google Play ou F-Droid

Installation

Pour cette install, je profite de mon infra Docker / Traefik, ça tombe bien Wallabag propose directement un docker-compose. Comme d’habitude, je procéde à quelques modifications par rapport au fichier d’origine.

Attention, cet exemple de déploiement est dépendant de la configuration de Traefik abordée ici

Pour une utilisation avec un backend MariaDB :

  • comme le port 80 est préempté par le conteneur Traefik, j’utilise la directive expose au lieu de ports
  • je remplace les bind mount par des named volumes
  • j’utilise un réseau dédié pour la connexion entre le conteneur applicatif, la database et Redis ainsi que celui reservé à Traefik
 1version: '3'
 2services:
 3  wallabag:
 4    image: wallabag/wallabag:latest
 5    container_name: wallabag_app
 6    environment:
 7      - MYSQL_ROOT_PASSWORD=wallaroot
 8      - SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
 9      - SYMFONY__ENV__DATABASE_HOST=db
10      - SYMFONY__ENV__DATABASE_PORT=3306
11      - SYMFONY__ENV__DATABASE_NAME=wallabag
12      - SYMFONY__ENV__DATABASE_USER=wallabag
13      - SYMFONY__ENV__DATABASE_PASSWORD=my-secure-password
14      - SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
15      - SYMFONY__ENV__MAILER_HOST=smtp.domain.tld
16      - SYMFONY__ENV__MAILER_USER=user@domain.tld
17      - SYMFONY__ENV__MAILER_PASSWORD=mail_password
18      - SYMFONY__ENV__FROM_EMAIL=noreply@domain.tld
19      - SYMFONY__ENV__DOMAIN_NAME=https://wb.domain.tld
20    labels:
21      - "traefik.enable=true"
22      - "traefik.docker.network=traefik_lan"
23      - "traefik.http.routers.wallabagnotls.rule=Host(`wb.domain.tld`)"
24      - "traefik.http.routers.wallabagnotls.entrypoints=webinsecure"
25      - "traefik.http.routers.wallabagnotls.middlewares=tlsredir@file"
26      - "traefik.http.routers.wallabag.rule=Host(`wb.domain.tld`)"
27      - "traefik.http.routers.wallabag.entrypoints=websecure"
28      - "traefik.http.routers.wallabag.tls=true"
29    expose:
30      - "80"
31    volumes:
32      - app:/var/www/wallabag/web/assets/images
33    restart: unless-stopped
34    depends_on:
35      - db
36    networks:
37      - lan
38      - traefik_lan

on ajoute la database et le cache Redis

 1db:
 2  image: mariadb
 3  container_name: wallabag_db
 4  environment:
 5    - MYSQL_ROOT_PASSWORD=my-secure-password
 6  volumes:
 7    - db:/var/lib/mysql
 8  restart: unless-stopped
 9  networks:
10    - lan
11
12redis:
13  image: redis:alpine
14  container_name: wallabag_redis
15  networks:
16    - lan
17  restart: unless-stopped

Pour fonctionner, il faut déclarer les réseaux et les volumes dans le docker-compose:

 1networks:
 2  lan:
 3    ipam:
 4      driver: default
 5      config:
 6        - subnet: "172.19.0.0/29"
 7  traefik_lan:
 8    external: true
 9
10volumes:
11 db:
12 app:

cette syntaxe permet d’obtenir:

 1[root@server wallabag]# docker network ls
 2NETWORK ID          NAME                DRIVER              SCOPE
 3ddb965f9d069        bridge              bridge              local
 412df137c23d1        traefik_lan         bridge              local
 576a52909db1d        wallabag_lan        bridge              local
 6
 7[root@server wallabag]# docker volume ls
 8DRIVER              VOLUME NAME
 9local               wallabag_app
10local               wallabag_db

Pour une utilisation avec SQLite

Pour une instance personnelle, il est possible d’utiliser Wallabag avec SQLlite. Il suffit de supprimer le conteneur mariadb et d’ajouter un volume pour persister la base SQLite sur le conteneur de l’application.

 1version: '3'
 2services:
 3  wallabag:
 4    image: wallabag/wallabag
 5    container_name: wallabag_app
 6    environment:
 7      - SYMFONY__ENV__DATABASE_DRIVER=pdo_sqlite
 8      - SYMFONY__ENV__MAILER_HOST=smtp.domain.tld
 9      - SYMFONY__ENV__MAILER_USER=user@ldomain.tld
10      - SYMFONY__ENV__MAILER_PASSWORD=mail_password
11      - SYMFONY__ENV__FROM_EMAIL=noreply@domain.tld
12      - SYMFONY__ENV__DOMAIN_NAME=https://wb.domain.tld
13    labels:
14      - "traefik.enable=true"
15      - "traefik.docker.network=traefik_lan"
16      - "traefik.http.routers.wallabagnotls.rule=Host(`wb.domain.tld`)"
17      - "traefik.http.routers.wallabagnotls.entrypoints=webinsecure"
18      - "traefik.http.routers.wallabagnotls.middlewares=tlsredir@file"
19      - "traefik.http.routers.wallabag.rule=Host(`wb.domain.tld`)"
20      - "traefik.http.routers.wallabag.entrypoints=websecure"
21      - "traefik.http.routers.wallabag.tls=true"
22      - "traefik.http.routers.wallabag.tls.certresolver=letsencrypt"
23
24    expose:
25      - "80"
26    volumes:
27      - data:/var/www/wallabag/data
28      - img:/var/www/wallabag/web/assets/images
29    restart: unless-stopped
30    networks:
31      - traefik_lan
32
33  redis:
34    image: redis:alpine
35    container_name: wallabag_cache
36    volumes:
37      - cache:/data
38    networks:
39      - traefik_lan
40    restart: unless-stopped
41
42networks:
43  traefik_lan:
44    external: true
45
46volumes:
47  data:
48  img:
49  cache:

utilisation

Le docker-compoe est termniné, il suffit de faire un docker-compose up -d pour lancer votre instance Wallabag. Cerise sur le gateau, vous pouvez exporter votre ancien wallabag au format JSON et le ré-impoter dans votre nouvelle instance.

screenshot wallabag

Vous pouvez également ajouter un bookmark directement dans votre barre de favoris pour faciliter l’utilisation au quotidien ( menu “Aide” )

Sources, docs…