From 8439ab369307b70b835e907a733017372e9b9208 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sun, 21 Dec 2025 14:17:47 +0300 Subject: [PATCH] Outline: migrate assets to local storage --- files/outline/docker-compose.template.yml | 15 +++------ playbook-outline.yml | 39 +++++++++++++++++------ 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/files/outline/docker-compose.template.yml b/files/outline/docker-compose.template.yml index 0e7df5f..eabface 100644 --- a/files/outline/docker-compose.template.yml +++ b/files/outline/docker-compose.template.yml @@ -5,6 +5,7 @@ services: outline_app: image: outlinewiki/outline:1.1.0 container_name: outline_app + user: "{{ user_create_result.uid }}:{{ user_create_result.group }}" restart: unless-stopped depends_on: - outline_postgres @@ -12,6 +13,8 @@ services: networks: - "outline_network" - "web_proxy_network" + volumes: + - "{{ media_dir }}:/var/lib/outline/data" environment: NODE_ENV: 'production' URL: 'https://outline.vakhrushev.me' @@ -22,16 +25,8 @@ services: PGSSLMODE: 'disable' REDIS_URL: 'redis://outline_redis:6379' - FILE_STORAGE: 's3' - FILE_STORAGE_UPLOAD_MAX_SIZE: '262144000' - AWS_ACCESS_KEY_ID: '{{ outline_s3_access_key }}' - AWS_SECRET_ACCESS_KEY: '{{ outline_s3_secret_key }}' - AWS_REGION: '{{ outline_s3_region }}' - AWS_S3_ACCELERATE_URL: '' - AWS_S3_UPLOAD_BUCKET_URL: '{{ outline_s3_url }}' - AWS_S3_UPLOAD_BUCKET_NAME: '{{ outline_s3_bucket }}' - AWS_S3_FORCE_PATH_STYLE: 'true' - AWS_S3_ACL: 'private' + FILE_STORAGE: 'local' + FILE_STORAGE_UPLOAD_MAX_SIZE: '262144000' # 250 MB OIDC_CLIENT_ID: '{{ outline_oidc_client_id | replace("$", "$$") }}' OIDC_CLIENT_SECRET: '{{ outline_oidc_client_secret | replace("$", "$$") }}' diff --git a/playbook-outline.yml b/playbook-outline.yml index 912fefa..3238c2f 100644 --- a/playbook-outline.yml +++ b/playbook-outline.yml @@ -10,10 +10,15 @@ app_user: "{{ app_name }}" app_owner_uid: 1007 app_owner_gid: 1008 + base_dir: "{{ (application_dir, app_name) | path_join }}" data_dir: "{{ (base_dir, 'data') | path_join }}" - postgres_data_dir: "{{ (base_dir, 'data', 'postgres') | path_join }}" - postgres_backups_dir: "{{ (base_dir, 'backups', 'postgres') | path_join }}" + media_dir: "{{ (base_dir, 'media') | path_join }}" + backups_dir: "{{ (base_dir, 'backups') | path_join }}" + + postgres_data_dir: "{{ (data_dir, 'postgres') | path_join }}" + postgres_backups_dir: "{{ (backups_dir, 'postgres') | path_join }}" + tasks: - name: "Create user and environment" @@ -35,17 +40,11 @@ loop: - "{{ base_dir }}" - "{{ data_dir }}" + - "{{ media_dir }}" + - "{{ backups_dir }}" - "{{ postgres_data_dir }}" - "{{ postgres_backups_dir }}" - - name: "Copy docker compose file" - ansible.builtin.template: - src: "./files/{{ app_name }}/docker-compose.template.yml" - dest: "{{ base_dir }}/docker-compose.yml" - owner: "{{ app_user }}" - group: "{{ app_user }}" - mode: "0640" - - name: "Copy backup script" ansible.builtin.template: src: "./files/{{ app_name }}/backup.template.sh" @@ -54,6 +53,26 @@ group: "{{ app_user }}" mode: "0750" + - name: "Create backup targets file" + ansible.builtin.lineinfile: + path: "{{ base_dir }}/backup-targets" + line: "{{ item }}" + create: true + owner: "{{ app_user }}" + group: "{{ app_user }}" + mode: "0750" + loop: + - "{{ media_dir }}" + - "{{ backups_dir }}" + + - name: "Copy docker compose file" + ansible.builtin.template: + src: "./files/{{ app_name }}/docker-compose.template.yml" + dest: "{{ base_dir }}/docker-compose.yml" + owner: "{{ app_user }}" + group: "{{ app_user }}" + mode: "0640" + - name: "Run application with docker compose" community.docker.docker_compose_v2: project_src: "{{ base_dir }}"