Отложенное чтение. Wallabag

2024-12-05 · 3 мин. для прочтения

Отложенное чтение. Wallabag.

Содержание

1 Общая информация

2 Установка

2.1 Контейнер

2.1.1 Общая информация

2.1.2 Podman

  1. Общая информация

  1. Загрузка

    • Скачайте контейнер:
      podman pull wallabag/wallabag
      
  1. Установка с SQLite

    1. Запуск вручную

      • Создайте каталоги для постоянных данных:
        mkdir -p /opt/wallabag/{data,images}
        chown -R nobody:nobody /opt/wallabag
        
      • Необходимо указать том для контейнера (для постоянного хранения):
        podman run --name wallabag -v /opt/wallabag/data:/var/www/wallabag/data -v /opt/wallabag/images:/var/www/wallabag/web/assets/images -p 40401:80 -e "SYMFONY__ENV__DOMAIN_NAME=https://wallabag.example.com" wallabag/wallabag
        
      • Сервер будет доступен по http://localhost:40401.
    1. docker-compose

      • Создадим файл docker-compose wallabag-sqlite.yaml:
        version: '3'
        
        networks:
            proxy-network:
                external: true
        
        services:
          wallabag:
            image: wallabag/wallabag:latest
            container_name: wallabag
            restart: unless-stopped
            environment:
        ​      - TZ=Etc/UTC
        ​      - SYMFONY__ENV__MAILER_DSN=smtp://127.0.0.1
        ​      - SYMFONY__ENV__MAILER_HOST=mail.example.com
        ​      - SYMFONY__ENV__FROM_EMAIL="wallabag@example.com"
        ​      - SYMFONY__ENV__SERVER_NAME="wallabag.example.com"
        ​      - SYMFONY__ENV__DOMAIN_NAME=https://wallabag.example.com
        ​      - PHP_MEMORY_LIMIT=512M
        ​      - SYMFONY__ENV__MAILER_USER=""
        ​      - SYMFONY__ENV__MAILER_PASSWORD=""
        ​      - SYMFONY__ENV__FOSUSER_REGISTRATION=false
        ​      - SYMFONY__ENV__FOSUSER_CONFIRMATION=false
        ​      - SYMFONY__ENV__TWOFACTOR_AUTH=false
            ports:
        ​      - 40401:80
            volumes:
        ​      - /opt/wallabag/images:/var/www/wallabag/web/assets/images
        ​      - /opt/wallabag/data:/var/www/wallabag/data
            networks:
        ​      - proxy-network
            healthcheck:
              test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost/api/info"]
              interval: 1m
              timeout: 3s
        
      • Запуск будет выполняться следующим образом:
        podman compose --file wallabag-sqlite.yaml up --detach
        
  1. Обновление

    • Обновление контейнера:
      podman pull wallabag/wallabag
      podman stop wallabag
      podman compose --file wallabag-sqlite.yaml up --detach
      
  1. Nginx

    • Настройте nginx:
      server {
             listen 443 ssl http2;
             listen [::]:443 ssl http2;
      
             server_name wallabag.example.com;
      
             ssl_certificate /etc/letsencrypt/live/wallabag.example.com/fullchain.pem;
             ssl_certificate_key /etc/letsencrypt/live/wallabag.example.com/privkey.pem;
      
              charset utf-8;
              gzip on;
              gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
      
              location / {
                      proxy_pass http://localhost:40401;
                      proxy_set_header X-Forwarded-Host $server_name;
                      proxy_set_header X-Forwarded-Proto https;
                      proxy_set_header X-Forwarded-For $remote_addr;
              }
      
      }
      
      server {
             listen         80;
             listen         [::]:80;
             server_name    wallabag.example.com;
             return         301 https://$server_name$request_uri;
      }
      
  1. Скрипт systemd

    • Создаём файл сервиса /etc/containers/systemd/wallabag.container:
      [Unit]
      Description=A templated wallabag container
      
      [Container]
      Image=wallabag
      ContainerName=wallabag
      PublishPort=40401:80
      
      [Service]
      # Restart service when sleep finishes
      Restart=always
      
      [Install]
      WantedBy=default.target
      
    • Запустим генератор и сообщим systemd о запуске новой службы:
      systemctl daemon-reload
      
    • Запустим службу:
      systemctl start wallabag.service
      
  1. Импорт Omnivore

    • Экспортировал записи с Omnivore.
    • Скачал архив с большим количеством файлов json (более 600).
    • Загружать каждый файл через web-интерфейс не представлялось возможным.
    • Скопировал архив на сервер.
    • Поскольку каталог /opt/wallabag/images уже подмонтирован к контейнеру в каталог /var/www/wallabag/web/assets/images, сделал в нём каталог omnivore и распаковал туда архив.
    • Запустил скрипт:
      #!/bin/bash
      
      cd /opt/wallabag/images/omnivore
      for i in metadata*
      do
          podman exec -it <container-id> sh -c "cd /var/www/wallabag/web/assets/images/omnivore; /var/www/wallabag/bin/console --env=prod wallabag:import -v --importer=omnivore --markAsRead=true -- <username> ${i} "
      done
      
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.