Add Outline (#2651)
* Add Outline * Format config.json * Coderabbitai * Fix description.md * Make proposed changes * Make proposed changes * Make proposed changes * Update docker-compose.yml Forgot to persist storage * fix: use right service names * fix: use right service names everywhere * Attempt to fix authentication errors * Update docker-compose.yml * Update nginx conf * Fix authentication * No need for extra config --------- Co-authored-by: Nicolas Meienberger <47644445+meienberger@users.noreply.github.com> Co-authored-by: Stavros <steveiliop56@gmail.com>
This commit is contained in:
parent
12f1a3dad6
commit
63b7f29c41
75
apps/outline/config.json
Normal file
75
apps/outline/config.json
Normal file
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"name": "Outline",
|
||||
"id": "outline",
|
||||
"available": true,
|
||||
"short_desc": "A home for all your docs",
|
||||
"author": "outline",
|
||||
"port": 8404,
|
||||
"categories": [
|
||||
"utilities"
|
||||
],
|
||||
"description": "Outline is a knowledge base designed for teams. It's goals are to be fast, intuitive and support many integrations.",
|
||||
"tipi_version": 1,
|
||||
"version": "0.75.2",
|
||||
"source": "https://github.com/outline/outline",
|
||||
"website": "https://getoutline.com",
|
||||
"exposable": true,
|
||||
"force_expose": true,
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Outline secret key",
|
||||
"min": 64,
|
||||
"env_variable": "OUTLINE_SECRET_KEY"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Outline utils secret",
|
||||
"min": 32,
|
||||
"env_variable": "OUTLINE_UTILS_SECRET"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "OIDC client ID",
|
||||
"min": 32,
|
||||
"env_variable": "OUTLINE_OIDC_CLID"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "OIDC client secret",
|
||||
"min": 32,
|
||||
"env_variable": "OUTLINE_OIDC_CLKEY"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Database password",
|
||||
"min": 32,
|
||||
"env_variable": "OUTLINE_PG_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "OIDC secret",
|
||||
"min": 32,
|
||||
"env_variable": "OUTLINE_OIDC_SECRET"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Username",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "OUTLINE_USER"
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"label": "Password",
|
||||
"min": 12,
|
||||
"required": true,
|
||||
"env_variable": "OUTLINE_PASSWORD"
|
||||
}
|
||||
],
|
||||
"supported_architectures": [
|
||||
"arm64",
|
||||
"amd64"
|
||||
]
|
||||
}
|
31
apps/outline/data/nginx/default.conf
Normal file
31
apps/outline/data/nginx/default.conf
Normal file
|
@ -0,0 +1,31 @@
|
|||
server {
|
||||
listen 80;
|
||||
client_max_body_size 100m;
|
||||
|
||||
# Outline Wiki
|
||||
location / {
|
||||
proxy_pass http://outline:3000;
|
||||
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Scheme $scheme;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
# Static file FOR OIDC Server
|
||||
location /uc/static {
|
||||
alias /uc/static_root;
|
||||
}
|
||||
|
||||
# OIDC Server
|
||||
location /uc {
|
||||
proxy_set_header SCRIPT_NAME /uc;
|
||||
proxy_pass http://outline-oidc:8000;
|
||||
}
|
||||
}
|
32
apps/outline/data/oidc-config.json.template
Normal file
32
apps/outline/data/oidc-config.json.template
Normal file
|
@ -0,0 +1,32 @@
|
|||
[
|
||||
{
|
||||
"model": "oidc_provider.client",
|
||||
"pk": 1,
|
||||
"fields": {
|
||||
"name": "outline",
|
||||
"owner": null,
|
||||
"client_type": "confidential",
|
||||
"client_id": "{{OUTLINE_OIDC_CLID}}",
|
||||
"client_secret": "{{OUTLINE_OIDC_CLKEY}}",
|
||||
"jwt_alg": "RS256",
|
||||
"date_created": "2024-03-02",
|
||||
"website_url": "",
|
||||
"terms_url": "",
|
||||
"contact_email": "",
|
||||
"logo": "",
|
||||
"reuse_consent": true,
|
||||
"require_consent": true,
|
||||
"_redirect_uris": "https://{{APP_DOMAIN}}/auth/oidc.callback",
|
||||
"_post_logout_redirect_uris": "",
|
||||
"_scope": "",
|
||||
"response_types": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
97
apps/outline/docker-compose.yml
Normal file
97
apps/outline/docker-compose.yml
Normal file
|
@ -0,0 +1,97 @@
|
|||
version: "3.8"
|
||||
|
||||
services:
|
||||
outline:
|
||||
container_name: outline
|
||||
image: docker.getoutline.com/outlinewiki/outline:0.75.2
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- DATABASE_URL=postgres://outline:${OUTLINE_PG_PASSWORD}@outline-postgres:5432/outline
|
||||
- REDIS_URL=redis://outline-redis:6379
|
||||
- SECRET_KEY=${OUTLINE_SECRET_KEY}
|
||||
- UTILS_SECRET=${OUTLINE_UTILS_SECRET}
|
||||
- URL=https://${APP_DOMAIN}
|
||||
- FORCE_HTTPS=false
|
||||
- FILE_STORAGE=local
|
||||
- FILE_STORAGE_UPLOAD_MAX_SIZE=26214400
|
||||
- PGSSLMODE=disable
|
||||
- OIDC_CLIENT_ID=${OUTLINE_OIDC_CLID}
|
||||
- OIDC_CLIENT_SECRET=${OUTLINE_OIDC_CLKEY}
|
||||
- OIDC_AUTH_URI=https://${APP_DOMAIN}/uc/oauth/authorize/
|
||||
- OIDC_TOKEN_URI=http://outline-oidc:8000/oauth/token/
|
||||
- OIDC_USERINFO_URI=http://outline-oidc:8000/oauth/userinfo/
|
||||
- OIDC_USERNAME_CLAIM=preferred_username
|
||||
- OIDC_DISPLAY_NAME=OpenID
|
||||
- OIDC_SCOPES=openid profile email
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/outline:/var/lib/outline/data
|
||||
depends_on:
|
||||
- outline-postgres
|
||||
- outline-redis
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
outline-postgres:
|
||||
container_name: outline-postgres
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=outline
|
||||
- POSTGRES_PASSWORD=${OUTLINE_PG_PASSWORD}
|
||||
- POSTGRES_DB=outline
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
outline-redis:
|
||||
container_name: outline-redis
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
outline-oidc:
|
||||
container_name: outline-oidc
|
||||
image: ghcr.io/hex-developer/oidc-provider:v0.2.0
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- LANGUAGE_CODE=en-us
|
||||
- TIME_ZONE=UTC
|
||||
- FORCE_SCRIPT_NAME=/uc
|
||||
- SECRET_KEY=${OUTLINE_OIDC_SECRET}
|
||||
- DJANGO_SUPERUSER_PASSWORD=${OUTLINE_PASSWORD}
|
||||
- DJANGO_SUPERUSER_USERNAME=${OUTLINE_USER}
|
||||
- DJANGO_SUPERUSER_EMAIL=user@outline.localhost
|
||||
- INITIAL_DATA=oidc-config.json
|
||||
- DOMAIN=https://${APP_DOMAIN}
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/oidc-config.json:/app/oidc-config.json:ro
|
||||
- ${APP_DATA_DIR}/data/uc/db:/app/db:z
|
||||
- ${APP_DATA_DIR}/data/uc/static_root:/app/static_root:z
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
||||
outline-nginx:
|
||||
container_name: outline-reverse-proxy
|
||||
image: nginx:alpine
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- ${APP_PORT}:80
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/nginx/:/etc/nginx/conf.d/:ro
|
||||
- ${APP_DATA_DIR}/data/uc/static_root:/uc/static_root:ro
|
||||
depends_on:
|
||||
- outline
|
||||
- outline-oidc
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
# Main
|
||||
traefik.enable: true
|
||||
traefik.http.middlewares.outline-web-redirect.redirectscheme.scheme: https
|
||||
traefik.http.services.outline.loadbalancer.server.port: 80
|
||||
traefik.http.routers.outline.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.outline.entrypoints: websecure
|
||||
traefik.http.routers.outline.service: outline
|
||||
traefik.http.routers.outline.tls.certresolver: myresolver
|
13
apps/outline/metadata/description.md
Normal file
13
apps/outline/metadata/description.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
## Outline
|
||||
_A fast, collaborative, knowledge base for your team built using React and Node.js._
|
||||
<img width="1640" alt="screenshot" src="https://user-images.githubusercontent.com/380914/110356468-26374600-7fef-11eb-9f6a-f2cc2c8c6590.png">
|
||||
|
||||
Outline is a full-featured knowledge base and is a great alternative to Notion, Obsidian and other similar apps.
|
||||
### Features
|
||||
- Easily host your documents
|
||||
- Modern UI
|
||||
- API & Integration support
|
||||
- Multiple components to choose from when editing documents
|
||||
- Markdown syntax
|
||||
|
||||
Learn more at the official [website](https://getoutline.com)
|
BIN
apps/outline/metadata/logo.jpg
Normal file
BIN
apps/outline/metadata/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
Loading…
Reference in New Issue
Block a user