Initial commit
This commit is contained in:
commit
06d0061448
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.env
|
||||||
|
.DS_Store
|
95
README.md
Normal file
95
README.md
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
# Self-Hosted AppFlowy Cloud Setup Guide
|
||||||
|
|
||||||
|
This guide will help you set up your own instance of AppFlowy Cloud.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- Docker and Docker Compose
|
||||||
|
- PostgreSQL 14 or higher
|
||||||
|
- Redis
|
||||||
|
- Minimum 2GB RAM
|
||||||
|
- Git
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
1. Clone the Appflowy-Cloud repository:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/AppFlowy-IO/AppFlowy-Cloud.git
|
||||||
|
cd AppFlowy-Cloud
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Configure environment variables:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp deploy.env .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Edit the following variables in the `.env` file to reflect your setup:
|
||||||
|
|
||||||
|
```env
|
||||||
|
# PostgreSQL Settings
|
||||||
|
POSTGRES_PASSWORD=
|
||||||
|
|
||||||
|
# Supabase user settings
|
||||||
|
SUPABASE_PASSWORD=
|
||||||
|
|
||||||
|
# authentication key, change this and keep the key safe and secret
|
||||||
|
# self defined key, you can use any string
|
||||||
|
GOTRUE_JWT_SECRET=
|
||||||
|
|
||||||
|
# If you want to use AWS SES, set the following variables:
|
||||||
|
GOTRUE_MAILER_AUTOCONFIRM=false
|
||||||
|
GOTRUE_SMTP_HOST=email-smtp.us-east-1.amazonaws.com
|
||||||
|
GOTRUE_SMTP_PORT=465
|
||||||
|
GOTRUE_SMTP_USER=
|
||||||
|
GOTRUE_SMTP_PASSWORD=
|
||||||
|
GOTRUE_SMTP_ADMIN_EMAIL=
|
||||||
|
|
||||||
|
# This user will be created when AppFlowy Cloud starts successfully
|
||||||
|
# You can use this user to login to the admin panel
|
||||||
|
GOTRUE_ADMIN_EMAIL=
|
||||||
|
GOTRUE_ADMIN_PASSWORD=
|
||||||
|
|
||||||
|
# Change this to your own domain where you host the docker-compose or gotrue
|
||||||
|
API_EXTERNAL_URL=
|
||||||
|
|
||||||
|
# File Storage
|
||||||
|
# This is where storage like images, files, etc. will be stored.
|
||||||
|
# By default, Minio is used as the default file storage which uses host's file system.
|
||||||
|
APPFLOWY_S3_SECRET_KEY=
|
||||||
|
|
||||||
|
# AppFlowy Cloud Mailer Configuration (same credentials as GOTRUE_SMTP_*)
|
||||||
|
APPFLOWY_MAILER_SMTP_HOST=email-smtp.us-east-1.amazonaws.com
|
||||||
|
APPFLOWY_MAILER_SMTP_PORT=465
|
||||||
|
APPFLOWY_MAILER_SMTP_USERNAME=
|
||||||
|
APPFLOWY_MAILER_SMTP_PASSWORD=
|
||||||
|
|
||||||
|
# PgAdmin
|
||||||
|
# Optional module to manage the postgres database
|
||||||
|
# You can access the pgadmin at http://your-host/pgadmin
|
||||||
|
# Refer to the APPFLOWY_DATABASE_URL for password when connecting to the database
|
||||||
|
PGADMIN_DEFAULT_EMAIL=
|
||||||
|
PGADMIN_DEFAULT_PASSWORD=
|
||||||
|
|
||||||
|
# Portainer (username: admin)
|
||||||
|
PORTAINER_PASSWORD=
|
||||||
|
|
||||||
|
# AppFlowy AI (Optional)
|
||||||
|
APPFLOWY_AI_OPENAI_API_KEY=
|
||||||
|
|
||||||
|
# AppFlowy Web (change localhost to your host address)
|
||||||
|
APPFLOWY_WEB_URL=http://localhost:3000
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Start the services:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Confirm that your services are running:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker ps -a
|
||||||
|
```
|
169
deploy.env
Normal file
169
deploy.env
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
# This file is a template for docker compose deployment
|
||||||
|
# Copy this file to .env and change the values as needed
|
||||||
|
|
||||||
|
# PostgreSQL Settings
|
||||||
|
POSTGRES_HOST=postgres
|
||||||
|
POSTGRES_USER=postgres
|
||||||
|
POSTGRES_PASSWORD=changepassword
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_DB=postgres
|
||||||
|
|
||||||
|
# Supabase user settings
|
||||||
|
SUPABASE_PASSWORD=root
|
||||||
|
|
||||||
|
# Redis Settings
|
||||||
|
REDIS_HOST=redis
|
||||||
|
REDIS_PORT=6379
|
||||||
|
|
||||||
|
# AppFlowy Cloud
|
||||||
|
## URL that connects to the gotrue docker container
|
||||||
|
APPFLOWY_GOTRUE_BASE_URL=http://gotrue:9999
|
||||||
|
## URL that connects to the postgres docker container
|
||||||
|
APPFLOWY_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
||||||
|
APPFLOWY_ACCESS_CONTROL=true
|
||||||
|
APPFLOWY_WEBSOCKET_MAILBOX_SIZE=6000
|
||||||
|
APPFLOWY_DATABASE_MAX_CONNECTIONS=40
|
||||||
|
## URL that connects to the redis docker container
|
||||||
|
APPFLOWY_REDIS_URI=redis://${REDIS_HOST}:${REDIS_PORT}
|
||||||
|
|
||||||
|
# admin frontend
|
||||||
|
## URL that connects to redis docker container
|
||||||
|
ADMIN_FRONTEND_REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
|
||||||
|
## URL that connects to gotrue docker container
|
||||||
|
ADMIN_FRONTEND_GOTRUE_URL=http://gotrue:9999
|
||||||
|
|
||||||
|
# authentication key, change this and keep the key safe and secret
|
||||||
|
# self defined key, you can use any string
|
||||||
|
GOTRUE_JWT_SECRET=hello456
|
||||||
|
# Expiration time in seconds for the JWT token
|
||||||
|
GOTRUE_JWT_EXP=7200
|
||||||
|
|
||||||
|
# User sign up will automatically be confirmed if this is set to true.
|
||||||
|
# If you have OAuth2 set up or smtp configured, you can set this to false
|
||||||
|
# to enforce email confirmation or OAuth2 login instead.
|
||||||
|
# If you set this to false, you need to either set up SMTP
|
||||||
|
GOTRUE_MAILER_AUTOCONFIRM=true
|
||||||
|
# Number of emails that can be per minute
|
||||||
|
GOTRUE_RATE_LIMIT_EMAIL_SENT=100
|
||||||
|
|
||||||
|
# If you intend to use mail confirmation, you need to set the SMTP configuration below
|
||||||
|
# You would then need to set GOTRUE_MAILER_AUTOCONFIRM=false
|
||||||
|
# Check for logs in gotrue service if there are any issues with email confirmation
|
||||||
|
# Note that smtps will be used for port 465, otherwise plain smtp with optional STARTTLS
|
||||||
|
GOTRUE_SMTP_HOST=smtp.gmail.com
|
||||||
|
GOTRUE_SMTP_PORT=465
|
||||||
|
GOTRUE_SMTP_USER=email_sender@some_company.com
|
||||||
|
GOTRUE_SMTP_PASS=email_sender_password
|
||||||
|
GOTRUE_SMTP_ADMIN_EMAIL=comp_admin@some_company.com
|
||||||
|
|
||||||
|
# This user will be created when AppFlowy Cloud starts successfully
|
||||||
|
# You can use this user to login to the admin panel
|
||||||
|
GOTRUE_ADMIN_EMAIL=admin@example.com
|
||||||
|
GOTRUE_ADMIN_PASSWORD=password
|
||||||
|
|
||||||
|
# User will be redirected to this after Email or OAuth login
|
||||||
|
# Change this to your own domain where you host the docker-compose or gotrue
|
||||||
|
# If you are using a different domain, you need to change the redirect_uri in the OAuth2 configuration
|
||||||
|
# Make sure that this domain is accessible to the user
|
||||||
|
# Make sure no endswith /
|
||||||
|
API_EXTERNAL_URL=http://your-host
|
||||||
|
|
||||||
|
# In docker environment, `postgres` is the hostname of the postgres service
|
||||||
|
# GoTrue connect to postgres using this url
|
||||||
|
GOTRUE_DATABASE_URL=postgres://supabase_auth_admin:${SUPABASE_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
||||||
|
|
||||||
|
# Refer to this for details: https://github.com/AppFlowy-IO/AppFlowy-Cloud/blob/main/doc/AUTHENTICATION.md
|
||||||
|
# Google OAuth2
|
||||||
|
GOTRUE_EXTERNAL_GOOGLE_ENABLED=false
|
||||||
|
GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=
|
||||||
|
GOTRUE_EXTERNAL_GOOGLE_SECRET=
|
||||||
|
GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=${API_EXTERNAL_URL}/gotrue/callback
|
||||||
|
# GitHub OAuth2
|
||||||
|
GOTRUE_EXTERNAL_GITHUB_ENABLED=false
|
||||||
|
GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=
|
||||||
|
GOTRUE_EXTERNAL_GITHUB_SECRET=
|
||||||
|
GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=${API_EXTERNAL_URL}/gotrue/callback
|
||||||
|
# Discord OAuth2
|
||||||
|
GOTRUE_EXTERNAL_DISCORD_ENABLED=false
|
||||||
|
GOTRUE_EXTERNAL_DISCORD_CLIENT_ID=
|
||||||
|
GOTRUE_EXTERNAL_DISCORD_SECRET=
|
||||||
|
GOTRUE_EXTERNAL_DISCORD_REDIRECT_URI=${API_EXTERNAL_URL}/gotrue/callback
|
||||||
|
# Apple OAuth2
|
||||||
|
GOTRUE_EXTERNAL_APPLE_ENABLED=false
|
||||||
|
GOTRUE_EXTERNAL_APPLE_CLIENT_ID=
|
||||||
|
GOTRUE_EXTERNAL_APPLE_SECRET=
|
||||||
|
GOTRUE_EXTERNAL_APPLE_REDIRECT_URI=${API_EXTERNAL_URL}/gotrue/callback
|
||||||
|
|
||||||
|
# File Storage
|
||||||
|
# Create the bucket if not exists on AppFlowy Cloud start up.
|
||||||
|
# Set this to false if the bucket has been created externally.
|
||||||
|
APPFLOWY_S3_CREATE_BUCKET=true
|
||||||
|
# This is where storage like images, files, etc. will be stored.
|
||||||
|
# By default, Minio is used as the default file storage which uses host's file system.
|
||||||
|
# Keep this as true if you are using other S3 compatible storage provider other than AWS.
|
||||||
|
APPFLOWY_S3_USE_MINIO=true
|
||||||
|
APPFLOWY_S3_MINIO_URL=http://minio:9000 # change this if you are using a different address for minio
|
||||||
|
APPFLOWY_S3_ACCESS_KEY=minioadmin
|
||||||
|
APPFLOWY_S3_SECRET_KEY=minioadmin
|
||||||
|
APPFLOWY_S3_BUCKET=appflowy
|
||||||
|
#APPFLOWY_S3_REGION=us-east-1
|
||||||
|
|
||||||
|
# AppFlowy Cloud Mailer
|
||||||
|
# Note that smtps (TLS) is always required, even for ports other than 465
|
||||||
|
APPFLOWY_MAILER_SMTP_HOST=smtp.gmail.com
|
||||||
|
APPFLOWY_MAILER_SMTP_PORT=465
|
||||||
|
APPFLOWY_MAILER_SMTP_USERNAME=email_sender@some_company.com
|
||||||
|
APPFLOWY_MAILER_SMTP_PASSWORD=email_sender_password
|
||||||
|
|
||||||
|
# Log level for the appflowy-cloud service
|
||||||
|
RUST_LOG=info
|
||||||
|
|
||||||
|
# PgAdmin
|
||||||
|
# Optional module to manage the postgres database
|
||||||
|
# You can access the pgadmin at http://your-host/pgadmin
|
||||||
|
# Refer to the APPFLOWY_DATABASE_URL for password when connecting to the database
|
||||||
|
PGADMIN_DEFAULT_EMAIL=admin@example.com
|
||||||
|
PGADMIN_DEFAULT_PASSWORD=password
|
||||||
|
|
||||||
|
# Portainer (username: admin)
|
||||||
|
PORTAINER_PASSWORD=password1234
|
||||||
|
|
||||||
|
# Cloudflare tunnel token
|
||||||
|
CLOUDFLARE_TUNNEL_TOKEN=
|
||||||
|
|
||||||
|
# NGINX
|
||||||
|
# Optional, change this if you want to use custom ports to expose AppFlowy
|
||||||
|
NGINX_PORT=80
|
||||||
|
NGINX_TLS_PORT=443
|
||||||
|
|
||||||
|
# If you are using a different postgres database, change the following values
|
||||||
|
# GOTRUE_DATABASE_URL=postgres://supabase_auth_admin:root@<host>:<port>/$POSTGRES_DB
|
||||||
|
# APPFLOWY_DATABASE_URL=postgres://POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/$POSTGRES_DB
|
||||||
|
|
||||||
|
# AppFlowy AI
|
||||||
|
APPFLOWY_AI_OPENAI_API_KEY=
|
||||||
|
APPFLOWY_AI_SERVER_PORT=5001
|
||||||
|
APPFLOWY_AI_SERVER_HOST=ai
|
||||||
|
APPFLOWY_AI_DATABASE_URL=postgresql+psycopg://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
||||||
|
APPFLOWY_LOCAL_AI_TEST_ENABLED=false
|
||||||
|
|
||||||
|
# AppFlowy History
|
||||||
|
APPFLOWY_GRPC_HISTORY_ADDRS=http://localhost:50051
|
||||||
|
APPFLOWY_HISTORY_REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
|
||||||
|
APPFLOWY_HISTORY_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
||||||
|
|
||||||
|
# AppFlowy Indexer
|
||||||
|
APPFLOWY_INDEXER_ENABLED=true
|
||||||
|
APPFLOWY_INDEXER_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
||||||
|
APPFLOWY_INDEXER_REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
|
||||||
|
|
||||||
|
# AppFlowy Collaborate
|
||||||
|
APPFLOWY_COLLABORATE_MULTI_THREAD=false
|
||||||
|
APPFLOWY_COLLABORATE_REMOVE_BATCH_SIZE=100
|
||||||
|
|
||||||
|
# AppFlowy Worker
|
||||||
|
APPFLOWY_WORKER_REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
|
||||||
|
APPFLOWY_WORKER_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
|
||||||
|
|
||||||
|
# AppFlowy Web
|
||||||
|
APPFLOWY_WEB_URL=http://localhost:3000
|
Loading…
Reference in New Issue
Block a user