When DMing me, remember that you have to trust both your server’s admin, as well as mine.

Please use the following age key to encrypt your message (and send me yours, so that I can reply).

age196r7j3hn9dpwsywvlch0ncrvtlx94l2kwyndj733j5vr73dy0vyqa0jgca

  • 1 Post
  • 68 Comments
Joined 1 year ago
cake
Cake day: June 14th, 2023

help-circle






  • 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: wallabag@example.com
          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.