Reset Gokapi and log in with Pocket ID
Gokapi now keeps its config and data in /opt/stacks/gokapi instead of named volumes. config.json is templated with Pocket ID as the OIDC provider, so a fresh install never shows the open /setup wizard. On a new database a one-off run with --deployment-password creates the super admin, after which only existing users can log in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -18,4 +18,6 @@ services:
|
|||||||
# Service-specific configurations
|
# Service-specific configurations
|
||||||
dawarich:
|
dawarich:
|
||||||
db_name: "dawarich"
|
db_name: "dawarich"
|
||||||
db_user: "dawarich"
|
db_user: "dawarich"
|
||||||
|
# Gokapi super admin: must match the Pocket ID account email
|
||||||
|
gokapi_admin_email: "phil@{{ primary_domain }}"
|
||||||
|
|||||||
@@ -1,10 +1,16 @@
|
|||||||
---
|
---
|
||||||
|
# Gokapi logs in through Pocket ID. config.json is written only on a fresh
|
||||||
|
# install (Gokapi rewrites it on upgrades), so changing the template later
|
||||||
|
# means deleting /opt/stacks/gokapi/config/config.json first.
|
||||||
- name: make gokapi directories
|
- name: make gokapi directories
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
|
mode: '0700'
|
||||||
loop:
|
loop:
|
||||||
- /opt/stacks/gokapi
|
- /opt/stacks/gokapi
|
||||||
|
- /opt/stacks/gokapi/config
|
||||||
|
- /opt/stacks/gokapi/data
|
||||||
|
|
||||||
- name: Template out the compose file
|
- name: Template out the compose file
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
@@ -13,6 +19,45 @@
|
|||||||
owner: root
|
owner: root
|
||||||
mode: '0644'
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Template out the gokapi config (fresh installs only)
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: gokapi-config.json.j2
|
||||||
|
dest: /opt/stacks/gokapi/config/config.json
|
||||||
|
owner: root
|
||||||
|
mode: '0600'
|
||||||
|
force: false
|
||||||
|
no_log: true
|
||||||
|
|
||||||
|
- name: Check for an existing gokapi database
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: /opt/stacks/gokapi/data/gokapi.sqlite
|
||||||
|
register: gokapi_db
|
||||||
|
|
||||||
|
# A new database has no users and Gokapi refuses to start, so run it once with
|
||||||
|
# --deployment-password to create the super admin (the Pocket ID email above).
|
||||||
|
- name: Create the gokapi super admin on a fresh install
|
||||||
|
when: not gokapi_db.stat.exists
|
||||||
|
block:
|
||||||
|
- name: Start a one-off gokapi with a deployment password
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: >-
|
||||||
|
docker compose run -d --rm --no-deps --name gokapi-init gokapi
|
||||||
|
/app/run.sh --deployment-password {{ vault_gokapi.deployment_password }}
|
||||||
|
chdir: /opt/stacks/gokapi
|
||||||
|
no_log: true
|
||||||
|
|
||||||
|
- name: Wait for the one-off gokapi to finish starting
|
||||||
|
ansible.builtin.wait_for:
|
||||||
|
path: /opt/stacks/gokapi/data/log.txt
|
||||||
|
search_regex: Gokapi started
|
||||||
|
timeout: 60
|
||||||
|
always:
|
||||||
|
- name: Stop the one-off gokapi
|
||||||
|
ansible.builtin.command: docker rm -f gokapi-init
|
||||||
|
when: not gokapi_db.stat.exists
|
||||||
|
changed_when: true
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
- name: deploy gokapi stack
|
- name: deploy gokapi stack
|
||||||
community.docker.docker_compose_v2:
|
community.docker.docker_compose_v2:
|
||||||
project_src: /opt/stacks/gokapi
|
project_src: /opt/stacks/gokapi
|
||||||
|
|||||||
@@ -6,15 +6,12 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
TZ: "UTC"
|
TZ: "UTC"
|
||||||
volumes:
|
volumes:
|
||||||
- gokapi_data:/app/data
|
- ./data:/app/data
|
||||||
- gokapi_config:/app/config
|
- ./config:/app/config
|
||||||
|
extra_hosts:
|
||||||
|
- "{{ subdomains.pocketid }}:{{ docker.hairpin_ip }}"
|
||||||
labels:
|
labels:
|
||||||
mag37.dockcheck.update: true
|
mag37.dockcheck.update: true
|
||||||
volumes:
|
|
||||||
gokapi_data:
|
|
||||||
driver: local
|
|
||||||
gokapi_config:
|
|
||||||
driver: local
|
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
external: true
|
external: true
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"Authentication": {
|
||||||
|
"Method": 1,
|
||||||
|
"SaltAdmin": "{{ vault_gokapi.salt_admin }}",
|
||||||
|
"SaltFiles": "{{ vault_gokapi.salt_files }}",
|
||||||
|
"Username": "{{ gokapi_admin_email }}",
|
||||||
|
"HeaderKey": "",
|
||||||
|
"OauthProvider": "https://{{ subdomains.pocketid }}",
|
||||||
|
"OAuthClientId": "{{ vault_gokapi.pocketid.client_id }}",
|
||||||
|
"OAuthClientSecret": "{{ vault_gokapi.pocketid.client_secret }}",
|
||||||
|
"OauthGroupScope": "",
|
||||||
|
"OAuthRecheckInterval": 12,
|
||||||
|
"OAuthGroups": [],
|
||||||
|
"OnlyRegisteredUsers": true
|
||||||
|
},
|
||||||
|
"Port": ":53842",
|
||||||
|
"ServerUrl": "https://{{ subdomains.gokapi }}/",
|
||||||
|
"RedirectUrl": "https://github.com/Forceu/Gokapi/",
|
||||||
|
"PublicName": "Satellite Sharing",
|
||||||
|
"DataDir": "data",
|
||||||
|
"DatabaseUrl": "sqlite://./data/gokapi.sqlite",
|
||||||
|
"ConfigVersion": 22,
|
||||||
|
"MaxFileSizeMB": 102400,
|
||||||
|
"MaxMemory": 50,
|
||||||
|
"ChunkSize": 45,
|
||||||
|
"MaxParallelUploads": 3,
|
||||||
|
"Encryption": {
|
||||||
|
"Level": 0,
|
||||||
|
"Cipher": null,
|
||||||
|
"Salt": "",
|
||||||
|
"Checksum": "",
|
||||||
|
"ChecksumSalt": ""
|
||||||
|
},
|
||||||
|
"UseSsl": false,
|
||||||
|
"PicturesAlwaysLocal": false,
|
||||||
|
"SaveIp": false,
|
||||||
|
"IncludeFilename": false
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user