Warning: Some posts on this platform may contain adult material intended for mature audiences only. Viewer discretion is advised. By clicking ‘Continue’, you confirm that you are 18 years or older and consent to viewing explicit content.
I don’t self-host a lot of things, but I’d say this is not the easiest I’ve done, just because it involves setting up multiple containers (unlike something like SearXNG). Also thought that I had to set-up an SMTP container, but I got away with not having to do it.
I used ansible (and pass to store credentials), so this is how I did it (maybe someone can pitch in and tell me what I can improve):
Finally, you then have to login with user:wallabag and password:wallabag and change them in the webUI. I changed the “wallabag” user to my user and set a new password.
I don’t self-host a lot of things, but I’d say this is not the easiest I’ve done, just because it involves setting up multiple containers (unlike something like SearXNG). Also thought that I had to set-up an SMTP container, but I got away with not having to do it.
I used ansible (and
pass
to store credentials), so this is how I did it (maybe someone can pitch in and tell me what I can improve):- name: Deploy Wallabag database community.docker.docker_container: name: db_wallabag image: mariadb recreate: true state: started memory: 500MB restart_policy: always log_options: max-size: "10m" max-file: "1" env: MYSQL_ROOT_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_mysql_root_password', missing='warn') }}" volumes: - ~/wallabag/data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 20s timeout: 3s - name: Deploy Wallabag redis community.docker.docker_container: name: redis_wallabag image: redis:alpine recreate: true state: started memory: 500MB restart_policy: always log_options: max-size: "10m" max-file: "1" links: - "db_wallabag:db_wallabag" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 20s timeout: 3s - name: Deploy Wallabag community.docker.docker_container: image: wallabag/wallabag:latest name: wallabag recreate: true state: started memory: 500MB restart_policy: always log_options: max-size: "10m" max-file: "1" links: - "redis_wallabag:redis_wallabag" - "db_wallabag:db_wallabag" ports: - "80" env: MYSQL_ROOT_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_mysql_root_password', missing='warn') }}" SYMFONY__ENV__DATABASE_DRIVER: pdo_mysql SYMFONY__ENV__DATABASE_HOST: db_wallabag SYMFONY__ENV__DATABASE_PORT: "3306" SYMFONY__ENV__DATABASE_NAME: db_wallabag SYMFONY__ENV__DATABASE_USER: db_wallabag SYMFONY__ENV__DATABASE_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_symfony_env_database_password', missing='warn') }}" SYMFONY__ENV__DATABASE_CHARSET: utf8mb4 SYMFONY__ENV__DATABASE_TABLE_PREFIX: "wallabag_" SYMFONY__ENV__MAILER_DSN: smtp://127.0.0.1 SYMFONY__ENV__FROM_EMAIL: [email protected] SYMFONY__ENV__DOMAIN_NAME: SYMFONY__ENV__SERVER_NAME: volumes: - ~/wallabag/images:/var/www/wallabag/web/assets/images - ~/wallabag/data:/var/www/wallabag/data healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost"] interval: 1m timeout: 3s
Then I set up caddy for the reverse proxy
- name: Upload Caddyfile ansible.builtin.copy: src: ./upload_files/Caddyfile dest: ~/Caddyfile - name: Deploy caddy community.docker.docker_container: image: caddy:2 name: caddy user: "1000:1000" recreate: true state: started memory: 500MB restart_policy: always log_options: max-size: "10m" max-file: "1" links: - "wallabag:wallabag" ports: - "80:80" - "443:443" volumes: - ~/Caddyfile:/etc/caddy/Caddyfile - ~/caddy_data:/data - ~/caddy_config:/config
And this is the
Caddyfile
my.url.com { reverse_proxy wallabag:80 }
Finally, you then have to login with user:wallabag and password:wallabag and change them in the webUI. I changed the “wallabag” user to my user and set a new password.