728x90
반응형
Outline Wiki는 팀을 위한 빠르고 협업 가능한 지식 기반 플랫폼입니다. 주로 React와 Node.js로 구축되었으며, 실시간 협업 기능과 Markdown 호환성을 갖추고 있습니다
주요 특징
- 실시간 협업: 여러 사용자가 동시에 문서를 편집할 수 있습니다.
- Markdown 지원: Markdown 형식을 사용하여 문서를 작성하고 편집할 수 있습니다.
- 셀프 호스팅 가능: 오픈 소스 프로젝트로, 자체 서버에 설치하여 사용할 수 있습니다.
- Slack 통합: Slack 계정을 통해 인증하고 통합할 수 있습니다
사용 사례
Outline Wiki는 팀 내 지식 공유와 문서화를 위한 훌륭한 도구입니다. 프로젝트 문서, 회의록, 기술 문서 등을 체계적으로 관리할 수 있습니다.
[Docker] 도커의 모든 것, 도커 추천 이미지!!! (tistory.com)
Slack API 생성하기
Slack API: Applications | Slack
Slack API 페이지 들어가서 App 생성
OAuth & Permissions 에서 Redirect URL 설정
Basic Information 메뉴에서 Client ID 와 Client Secret 복사 하여 docker.env 설정에 입력
$ vi docker.env
openssl rand -hex 32 명령어로 생성된 값을 SCRET_KEY 와 UTILS_SECRET 에 입력
-- 기본으로 수정해야할 설정 값 --
SCRET_KEY=
UTILS_SECRET=
URL=https://outline.example.org
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
# –––––––––––––––– REQUIRED ––––––––––––––––
NODE_ENV=production
# Generate a hex-encoded 32-byte random key. You should use `openssl rand -hex 32`
# in your terminal to generate a random value.
SECRET_KEY=
# Generate a unique random key. The format is not important but you could still use
# `openssl rand -hex 32` in your terminal to produce this.
UTILS_SECRET=
# For production point these at your databases, in development the default
# should work out of the box.
DATABASE_URL=postgres://user:pass@localhost:5432/outline
DATABASE_CONNECTION_POOL_MIN=
DATABASE_CONNECTION_POOL_MAX=
# Uncomment this to disable SSL for connecting to Postgres
PGSSLMODE=disable
# For redis you can either specify an ioredis compatible url like this
REDIS_URL=redis://localhost:6379
# or alternatively, if you would like to provide additional connection options,
# use a base64 encoded JSON connection option object. Refer to the ioredis documentation
# for a list of available options.
# Example: Use Redis Sentinel for high availability
# {"sentinels":[{"host":"sentinel-0","port":26379},{"host":"sentinel-1","port":26379}],"name":"mymaster"}
# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJzZW50aW5lbC0wIiwicG9ydCI6MjYzNzl9LHsiaG9zdCI6InNlbnRpbmVsLTEiLCJwb3J0IjoyNjM3OX1dLCJuYW1lIjoibXltYXN0ZXIifQ==
# URL should point to the fully qualified, publicly accessible URL. If using aPGSSLMODE
# proxy the port in URL and PORT may be different.
URL=
PORT=3000
# See [documentation](docs/SERVICES.md) on running a separate collaboration
# server, for normal operation this does not need to be set.
# COLLABORATION_URL=
# Specify what storage system to use. Possible value is one of "s3" or "local".
# For "local", the avatar images and document attachments will be saved on local disk.
FILE_STORAGE=local
# If "local" is configured for FILE_STORAGE above, then this sets the parent directory under
# which all attachments/images go. Make sure that the process has permissions to create
# this path and also to write files to it.
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
# Maximum allowed size for the uploaded attachment.
FILE_STORAGE_UPLOAD_MAX_SIZE=262144000
# Override the maximum size of document imports, generally this should be lower
# than the document attachment maximum size.
FILE_STORAGE_IMPORT_MAX_SIZE=
# Override the maximum size of workspace imports, these can be especially large
# and the files are temporary being automatically deleted after a period of time.
FILE_STORAGE_WORKSPACE_IMPORT_MAX_SIZE=
# To support uploading of images for avatars and document attachments in a distributed
# architecture an s3-compatible storage can be configured if FILE_STORAGE=s3 above.
# AWS_ACCESS_KEY_ID=get_a_key_from_aws
# AWS_SECRET_ACCESS_KEY=get_the_secret_of_above_key
# AWS_REGION=xx-xxxx-x
# AWS_S3_ACCELERATE_URL=
# AWS_S3_UPLOAD_BUCKET_URL=http://s3:4569
# AWS_S3_UPLOAD_BUCKET_NAME=bucket_name_here
# AWS_S3_FORCE_PATH_STYLE=true
# AWS_S3_ACL=private
# –––––––––––––– AUTHENTICATION ––––––––––––––
# Third party signin credentials, at least ONE OF EITHER Google, Slack,
# or Microsoft is required for a working installation or you'll have no sign-in
# options.
# To configure Slack auth, you'll need to create an Application at
# => https://api.slack.com/apps
#
# When configuring the Client ID, add a redirect URL under "OAuth & Permissions":
# https://<URL>/auth/slack.callback
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
# To configure Google auth, you'll need to create an OAuth Client ID at
# => https://console.cloud.google.com/apis/credentials
#
# When configuring the Client ID, add an Authorized redirect URI:
# https://<URL>/auth/google.callback
# GOOGLE_CLIENT_ID=
# GOOGLE_CLIENT_SECRET=
# To configure Microsoft/Azure auth, you'll need to create an OAuth Client. See
# the guide for details on setting up your Azure App:
# => https://wiki.generaloutline.com/share/dfa77e56-d4d2-4b51-8ff8-84ea6608faa4
# AZURE_CLIENT_ID=
# AZURE_CLIENT_SECRET=
# AZURE_RESOURCE_APP_ID=
# To configure generic OIDC auth, you'll need some kind of identity provider.
# See documentation for whichever IdP you use to acquire the following info:
# Redirect URI is https://<URL>/auth/oidc.callback
# OIDC_CLIENT_ID=
# OIDC_CLIENT_SECRET=
# OIDC_AUTH_URI=
# OIDC_TOKEN_URI=
# OIDC_USERINFO_URI=
# OIDC_LOGOUT_URI=
# Specify which claims to derive user information from
# Supports any valid JSON path with the JWT payload
#OIDC_USERNAME_CLAIM=
# Display name for OIDC authentication
#OIDC_DISPLAY_NAME=
# Space separated auth scopes.
#OIDC_SCOPES=
# To configure the GitHub integration, you'll need to create a GitHub App at
# => https://github.com/settings/apps
#
# When configuring the Client ID, add a redirect URL under "Permissions & events":
# https://<URL>/api/github.callback
#GITHUB_CLIENT_ID=
#GITHUB_CLIENT_SECRET=
#GITHUB_APP_NAME=
#GITHUB_APP_ID=
#GITHUB_APP_PRIVATE_KEY=
# –––––––––––––––– OPTIONAL ––––––––––––––––
# Base64 encoded private key and certificate for HTTPS termination. This is only
# required if you do not use an external reverse proxy. See documentation:
# https://wiki.generaloutline.com/share/1c922644-40d8-41fe-98f9-df2b67239d45
# SSL_KEY=
# SSL_CERT=
# If using a Cloudfront/Cloudflare distribution or similar it can be set below.
# This will cause paths to javascript, stylesheets, and images to be updated to
# the hostname defined in CDN_URL. In your CDN configuration the origin server
# should be set to the same as URL.
# CDN_URL=
# Auto-redirect to https in production. The default is true but you may set to
# false if you can be sure that SSL is terminated at an external loadbalancer.
FORCE_HTTPS=false
# Have the installation check for updates by sending anonymized statistics to
# the maintainers
# ENABLE_UPDATES=true
# How many processes should be spawned. As a reasonable rule divide your servers
# available memory by 512 for a rough estimate
WEB_CONCURRENCY=2
# You can remove this line if your reverse proxy already logs incoming http
# requests and this ends up being duplicative
DEBUG=http
# Configure lowest severity level for server logs. Should be one of
# error, warn, info, http, verbose, debug and silly
LOG_LEVEL=info
# For a complete Slack integration with search and posting to channels the
# following configs are also needed, some more details
# => https://wiki.generaloutline.com/share/be25efd1-b3ef-4450-b8e5-c4a4fc11e02a
#
# SLACK_VERIFICATION_TOKEN=your_token
# SLACK_APP_ID=A0XXXXXXX
# SLACK_MESSAGE_ACTIONS=true
# Optionally enable Sentry (sentry.io) to track errors and performance,
# and optionally add a Sentry proxy tunnel for bypassing ad blockers in the UI:
# https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option)
# SENTRY_DSN=
# SENTRY_TUNNEL=
# To support sending outgoing transactional emails such as "document updated" or
# "you've been invited" you'll need to provide authentication for an SMTP server
# SMTP_HOST=
# SMTP_PORT=
# SMTP_USERNAME=
# SMTP_PASSWORD=
# SMTP_FROM_EMAIL=
# SMTP_REPLY_EMAIL=
# SMTP_TLS_CIPHERS=
# SMTP_SECURE=true
# The default interface language. See translate.getoutline.com for a list of
# available language codes and their rough percentage translated.
DEFAULT_LANGUAGE=en_US
# Optionally enable rate limiter at application web server
RATE_LIMITER_ENABLED=true
# Configure default throttling parameters for rate limiter
RATE_LIMITER_REQUESTS=1000
RATE_LIMITER_DURATION_WINDOW=60
# Iframely API config
# IFRAMELY_URL=
# IFRAMELY_API_KEY=
docker-compose.yml 파일
docker-compose.yml
version: "3.2"
services:
outline:
image: docker.getoutline.com/outlinewiki/outline:latest
env_file: ./docker.env
network_mode: "host"
ports:
- "3000:3000"
volumes:
- /APP/outline/storage-data:/var/lib/outline/data
depends_on:
- postgres
- redis
redis:
image: redis
env_file: ./docker.env
network_mode: "host"
ports:
- "6379:6379"
volumes:
- /APP/outline/redis.conf:/redis.conf
command: ["redis-server", "/redis.conf"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 30s
retries: 3
postgres:
image: postgres
env_file: ./docker.env
network_mode: "host"
ports:
- "5432:5432"
volumes:
- /APP/outline/database-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-d", "outline", "-U", "user"]
interval: 30s
timeout: 20s
retries: 3
environment:
POSTGRES_USER: 'user'
POSTGRES_PASSWORD: 'pass'
POSTGRES_DB: 'outline'
redis.conf 파일
redis.conf
# 바인딩 주소 설정
bind 0.0.0.0
# Redis 서버를 시작하는 데 사용할 포트 지정
port 6379
# redis 서비스를 daemon 으로 실행하기 위해 yes 설정
#daemonize yes
# 클러스터 모드 활성화
cluster-enabled no
# 클러스터에 사용될 포트 범위
cluster-node-timeout 3000
# 클러스터에 속한 마스터의 최대 수
cluster-require-full-coverage no
# 백그라운드로 RDB 스냅샷 저장
# 더 많은 옵션은 https://redis.io/topics/persistence 를 참고하세요.
appendonly yes
# append only file
appendfilename "appendonly-6379.aof"
# 슬레이브 설정
#slaveof 127.0.0.1 6004
#slave-read-only yes
# 접속가능 크라이언트 수 설정
maxclients 50000
# 최대 메모리 설정
maxmemory 2GB
# 메모리를 초과하는 경우 사용할 정책 설정 (allkeys-lru : 모든 키중에서 가장 오래도록 사용하지 않았던 키 삭제)
maxmemory-policy allkeys-lru
# 비밀번호 설정
#requirepass master
# master node 의 비밀번호를 slave node에 설정정
#masterauth master
# IP 주소 기반 접근 제어
# bind 127.0.0.1
# 보안을 위해 클라이언트 주소 또는 서브넷에서 연결을 거부
# deny 192.168.1.1
# 스냅샷 주기 설정
#save 900 1
#save 300 10
#save 60 10000
# RDB 스냅샷을 사용하는 경우의 파일 이름 설정
dbfilename dump-6379.rdb
docker-compose 시작
docker-compose up -d
서비스 URL 접속
http://[서버 IP]:3000 또는 https://outline.example.org (Reverse Proxy 한 도메인)
SLACK 워크스페이스 액세스 권한 허용
아주 깔끔한 UI 로 Notion 과 맞대응 할만 한 Outline
설정 메뉴
기본적인 기능 적재
다양한 앱과 연동 가능
docker-comopse 중지
docker-compose down
참고 사이트
How to Install Outline Wiki on Docker (bitdoze.com)
Docker - Outline (getoutline.com)
728x90
반응형
LIST
'Docker' 카테고리의 다른 글
[Docker] Pi.alert 로 WIFI/LAN 접속 감지기 (0) | 2024.09.13 |
---|---|
[Docker] DB 관리자 Web Tool의 최강자 - CloudBeaver (2) | 2024.09.04 |
[Docker] docker image 최신화 및 컨테이너 재생성 (1) | 2024.08.09 |
[Docker] fenrus (통합 대시보드) 구축하기 (1) | 2024.07.17 |
[Docker] OwnCloud (Private Cloud Storage) 구축하기 (2) | 2024.07.15 |