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 directiveexpose
au lieu deports
- je remplace les
bind mount
par desnamed 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.
Vous pouvez également ajouter un bookmark directement dans votre barre de favoris pour faciliter l’utilisation au quotidien ( menu “Aide” )
Sources, docs…
- la doc officielle (EN)
- Pour importer dans une liseuse Kobo: