Compare commits

...

23 Commits

Author SHA1 Message Date
Moritz a45b5e158b add alakazam integration file alaconnect.yml
continuous-integration/drone/push Build is passing Details
2024-05-13 17:36:24 +02:00
Moritz 1669d64a5a chore: publish 0.4.0+0.22.1 release
continuous-integration/drone/push Build is passing Details
2024-02-27 23:12:55 +01:00
Moritz 8be72aa8df add optional VIKUNJA_RATELIMIT_NOAUTHLIMIT env
continuous-integration/drone/push Build is passing Details
2024-02-27 16:30:19 +01:00
Moritz e501cc662d Add sample oauth data 2024-02-27 16:26:49 +01:00
Philipp Rothmann 8050d24c7c chore: publish 0.3.0+0.21.0 release
continuous-integration/drone/push Build is passing Details
2023-07-13 11:52:56 +02:00
Philipp Rothmann d3c98de025 chore: point backup to a volume directory 2023-06-26 17:22:51 +02:00
Moritz 365448458c Remove on-failure restart policy
continuous-integration/drone/push Build is passing Details
Always restart the container
2023-05-23 16:39:06 +02:00
Moritz 4bbec31d8a add auto update and timeout env
continuous-integration/drone/push Build is passing Details
2023-04-18 18:24:41 +02:00
Moritz 1ce54b1fe3 add timeout label
continuous-integration/drone/push Build is passing Details
2023-04-18 13:03:37 +02:00
Philipp Rothmann fe83250372 chore: publish 0.2.4+0.20.5 release
continuous-integration/drone/push Build was killed Details
2023-03-21 16:34:00 +01:00
Philipp Rothmann 4cfe5f66a8 chore: publish 0.2.3+0.20.3 release
continuous-integration/drone/push Build is passing Details
2023-03-06 16:30:11 +01:00
Philipp Rothmann 6955772632 fix: bump config version 2023-03-06 16:30:01 +01:00
Philipp Rothmann e7addc8405 chore: add .drone file
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details
2023-03-06 16:22:39 +01:00
Philipp Rothmann d7412e71cf chore: publish 0.2.2+0.20.3 release 2023-03-06 16:18:58 +01:00
Philipp Rothmann 2206aeca68 fix: remove healthcheck, it breaks everthing as usual ... 2023-03-06 16:18:18 +01:00
Philipp Rothmann 464d2cf3ba feat: use redis for keyvalue cache 2023-03-06 16:17:47 +01:00
Philipp Rothmann 35d1e14a81 feat: increase jwtttl 2023-03-06 16:17:25 +01:00
Philipp Rothmann 5bbe653775 feat: sso logout url 2023-03-06 16:15:54 +01:00
Philipp Rothmann e6d99ff449 feat: add healthcheck for api 2023-02-16 10:28:55 +01:00
Philipp Rothmann e070a5edbf fix: example domain in .env 2023-01-20 15:51:27 +01:00
Philipp Rothmann 5e41b22f61 chore: publish 0.2.1+0.20.1 release 2022-12-02 13:08:31 +01:00
Philipp Rothmann e9eae9a9d5 chore: publish 0.2.0+0.20.0 release 2022-11-08 09:21:19 +01:00
Philipp Rothmann 3ec29424e8 make user and email search optin default 2022-10-24 13:32:06 +02:00
7 changed files with 124 additions and 39 deletions

43
.drone.yml Normal file
View File

@ -0,0 +1,43 @@
---
kind: pipeline
name: deploy to swarm-test.autonomic.zone
steps:
- name: deployment
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
settings:
host: swarm-test.autonomic.zone
stack: vikunja
generate_secrets: true
purge: true
deploy_key:
from_secret: drone_ssh_swarm_test
networks:
- proxy
environment:
DOMAIN: authentik.swarm-test.autonomic.zone
STACK_NAME: authentik
LETS_ENCRYPT_ENV: production
CONFIG_YML_VERSION: v1
SECRET_DB_PASSWORD_VERSION: v1
SECRET_JWT_SECRET_VERSION: v1
trigger:
branch:
- main
---
kind: pipeline
name: generate recipe catalogue
steps:
- name: release a new version
image: plugins/downstream
settings:
server: https://build.coopcloud.tech
token:
from_secret: drone_abra-bot_token
fork: true
repositories:
- coop-cloud/auto-recipes-catalogue-json
trigger:
event: tag

View File

@ -1,6 +1,8 @@
TYPE=vikunja
TIMEOUT=300
ENABLE_AUTO_UPDATE=true
DOMAIN={{ .Domain }}
DOMAIN=vikunja.example.com
## Domain aliases
#EXTRA_DOMAINS=', `www.vikunja.example.com`'
@ -14,13 +16,16 @@ LOG_LEVEL=INFO
COMPOSE_FILE=compose.yml
#VIKUNJA_RATELIMIT_NOAUTHLIMIT=10
# SSO OAUTH
# e.g. see https://goauthentik.io/integrations/services/vikunja/
# COMPOSE_FILE="${COMPOSE_FILE}:compose.oauth.yml"
# OAUTH_ENABLED=true
# OAUTH_NAME
# OAUTH_URL
# OAUTH_CLIENT_ID
# OAUTH_NAME=authentik
# OAUTH_URL=https://login.example.com/application/o/vikunja/
# OAUTH_CLIENT_ID=vikunja
# OAUTH_LOGOUT_URL=https://login.example.com/application/o/vikunja/end-session/
# SECRET_OAUTH_SECRET_VERSION=v1
# E-MAIL

View File

@ -1 +1 @@
export CONFIG_YML_VERSION=v2
export CONFIG_YML_VERSION=v4

12
alaconnect.yml Normal file
View File

@ -0,0 +1,12 @@
authentik:
env:
OAUTH_NAME: authentik
OAUTH_URL: https://authentik.example.com/application/o/vikunja/
OAUTH_LOGOUT_URL: https://authentik.example.com/application/o/vikunja/end-session/
OAUTH_CLIENT_ID: vikunja
uncomment:
- compose.oauth.yml
- OAUTH_ENABLED
- SECRET_OAUTH_SECRET_VERSION
shared_secrets:
vikunja_secret: oauth_secret

View File

@ -7,6 +7,7 @@ services:
- OAUTH_NAME
- OAUTH_URL
- OAUTH_CLIENT_ID
- OAUTH_LOGOUT_URL
- SECRET_OAUTH_SECRET_VERSION=V1
secrets:
- oauth_secret

View File

@ -3,10 +3,11 @@ version: "3.8"
services:
api:
image: vikunja/api:0.19.2
image: vikunja/api:0.22.1
environment:
- DOMAIN
- LOG_LEVEL
- VIKUNJA_RATELIMIT_NOAUTHLIMIT
volumes:
- files:/app/vikunja/files
networks:
@ -17,10 +18,8 @@ services:
- db_password
configs:
- source: config_yml
target: /app/vikunja/config.yml
target: /etc/vikunja/config.yml
deploy:
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
- "traefik.http.services.${STACK_NAME}_api.loadbalancer.server.port=3456"
@ -29,19 +28,18 @@ services:
- "traefik.http.routers.${STACK_NAME}_api.tls.certresolver=${LETS_ENCRYPT_ENV}"
app:
image: vikunja/frontend:0.19.1
image: vikunja/frontend:0.22.1
networks:
- proxy
deploy:
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "coop-cloud.${STACK_NAME}.version=0.1.0+0.19.1"
- "coop-cloud.${STACK_NAME}.version=0.4.0+0.22.1"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost" ]
interval: 30s
@ -69,13 +67,11 @@ services:
secrets:
- db_password
deploy:
restart_policy:
condition: on-failure
labels:
backupbot.backup: "true"
backupbot.backup.pre-hook: "mkdir -p /tmp/backup/ && PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /tmp/backup/backup.sql"
backupbot.backup.post-hook: "rm -rf /tmp/backup"
backupbot.backup.path: "/tmp/backup/"
backupbot.backup.pre-hook: "PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /var/lib/postgresql/data/backup.sql"
backupbot.backup.post-hook: "rm -rf /var/lib/postgresql/data/backup.sql"
backupbot.backup.path: "/var/lib/postgresql/data/backup.sql"
volumes:
files:

View File

@ -5,8 +5,8 @@ service:
JWTSecret: {{ secret "jwt_secret" }}
# # The duration of the issed JWT tokens in seconds.
# # The default is 259200 seconds (3 Days).
# jwtttl: 259200
# # The duration of the "remember me" time in seconds. When the login request is made with
# jwtttl: 604800
# # The duration of the "remember me" time in seconds. When the login request is made with
# # the long param set, the token returned will be valid for this period.
# # The default is 2592000 seconds (30 Days).
# jwtttllong: 2592000
@ -52,14 +52,14 @@ service:
# # If enabled, vikunja will send an email to everyone who is either assigned to a task or created it when a task reminder
# # is due.
# enableemailreminders: true
# # If true, will allow users to request the complete deletion of their account. When using external authentication methods
# # If true, will allow users to request the complete deletion of their account. When using external authentication methods
# # it may be required to coordinate with them in order to delete the account. This setting will not affect the cli commands
# # for user deletion.
# enableuserdeletion: true
# # The maximum size clients will be able to request for user avatars.
# # If clients request a size bigger than this, it will be changed on the fly.
# maxavatarsize: 1024
#
#
database:
# Database type to use. Supported types are mysql, postgres and sqlite.
type: "postgres"
@ -90,7 +90,7 @@ database:
# sslrootcert: ""
# # Enable SSL/TLS for mysql connections. Options: false, true, skip-verify, preferred
# tls: false
#
#
cache:
# If cache is enabled or not
enabled: true
@ -110,7 +110,7 @@ redis:
password: ''
# 0 means default database
db: 0
#
#
# cors:
# # Whether to enable or disable cors headers.
# # Note: If you want to put the frontend and the api on seperate domains or ports, you will need to enable this.
@ -121,7 +121,7 @@ redis:
# - "*"
# # How long (in seconds) the results of a preflight request can be cached.
# maxage: 0
#
#
{{ if eq (env "SMTP_ENABLED") "true" }}
mailer:
@ -170,7 +170,7 @@ log:
# events: "stdout"
# # The log level for event log messages. Possible values (case-insensitive) are ERROR, INFO, DEBUG.
# eventslevel: "DEBUG"
#
#
# ratelimit:
# # whether or not to enable the rate limit
# enabled: false
@ -184,14 +184,14 @@ log:
# # Possible values are "keyvalue", "memory" or "redis".
# # When choosing "keyvalue" this setting follows the one configured in the "keyvalue" section.
# store: keyvalue
#
#
# files:
# # The path where files are stored
# basepath: ./files # relative to the binary
# # The maximum size of a file, as a human-readable string.
# # Warning: The max size is limited 2^64-1 bytes due to the underlying datatype
# maxsize: 20MB
#
#
# migration:
# # These are the settings for the wunderlist migrator
# wunderlist:
@ -249,11 +249,11 @@ log:
# # with the code obtained from the microsoft graph api.
# # Note that the vikunja frontend expects this to be /migrate/microsoft-todo
# redirecturl: <frontend url>/migrate/microsoft-todo
#
#
# avatar:
# # When using gravatar, this is the duration in seconds until a cached gravatar user avatar expires
# gravatarexpiration: 3600
#
#
# backgrounds:
# # Whether to enable backgrounds for lists at all.
# enabled: true
@ -272,19 +272,19 @@ log:
# # It will only show in the UI if your application has been approved for Enterprise usage, therefore if
# # youre in Demo mode, you can also find the ID in the URL at the end: https://unsplash.com/oauth/applications/:application_id
# applicationid:
#
#
# # Legal urls
# # Will be shown in the frontend if configured here
# legal:
# imprinturl:
# privacyurl:
#
#
# # Key Value Storage settings
# # The Key Value Storage is used for different kinds of things like metrics and a few cache systems.
# keyvalue:
# # The type of the storage backend. Can be either "memory" or "redis". If "redis" is chosen it needs to be configured seperately.
# type: "memory"
#
keyvalue:
# The type of the storage backend. Can be either "memory" or "redis". If "redis" is chosen it needs to be configured seperately.
type: "redis"
#
auth:
# Local authentication will let users log in and register (if enabled) through the db.
# This is the default auth mechanism and does not require any additional configuration.
@ -302,16 +302,19 @@ auth:
{{ if eq (env "OAUTH_ENABLED") "true" }}
openid:
# Enable or disable OpenID Connect authentication
enabled: {{ env "OAUTH_ENABLED" }}
enabled: {{ env "OAUTH_ENABLED" }}
# The url to redirect clients to. Defaults to the configured frontend url. If you're using Vikunja with the official
# frontend, you don't need to change this value.
# redirecturl: <frontend url>
redirecturl: https://{{ env "DOMAIN" }}/auth/openid/
# A list of enabled providers
providers:
# The name of the provider as it will appear in the frontend.
- name: {{ env "OAUTH_NAME" }}
# The auth url to send users to if they want to authenticate using OpenID Connect.
authurl: {{ env "OAUTH_URL" }}
# The oidc logouturl that users will be redirected to on logout.
# Leave empty or delete key, if you do not want to be redirected.
logouturl: {{ env "OAUTH_LOGOUT_URL" }}
# The client ID used to authenticate Vikunja at the OpenID Connect provider.
clientid: {{ env "OAUTH_CLIENT_ID" }}
# The client secret used to authenticate Vikunja at the OpenID Connect provider.
@ -325,4 +328,29 @@ auth:
# username:
# # If set to a non-empty value the /metrics endpoint will require this as a password via basic auth in combination with the username below.
# password:
#
#
# Provide default settings for new users. When a new user is created, these settings will automatically be set for the user. If you change them in the config file afterwards they will not be changed back for existing users.
defaultsettings:
# The avatar source for the user. Can be `gravatar`, `initials`, `upload` or `marble`. If you set this to `upload` you'll also need to specify `defaultsettings.avatar_file_id`.
# avatar_provider: initials
# The id of the file used as avatar.
# avatar_file_id: 0
# If set to true users will get task reminders via email.
# email_reminders_enabled: false
# If set to true will allow other users to find this user when searching for parts of their name.
discoverable_by_name: true
# If set to true will allow other users to find this user when searching for their exact email.
discoverable_by_email: true
# If set to true will send an email every day with all overdue tasks at a configured time.
# overdue_tasks_reminders_enabled: true
# When to send the overdue task reminder email.
# overdue_tasks_reminders_time: 9:00
# The id of the default list. Make sure users actually have access to this list when setting this value.
# default_list_id: 0
# Start of the week for the user. `0` is sunday, `1` is monday and so on.
# week_start: 0
# The language of the user interface. Must be an ISO 639-1 language code. Will default to the browser language the user uses when signing up.
# language: <unset>
# The time zone of each individual user. This will affect when users get reminders and overdue task emails.
# timezone: <time zone set at service.timezone>