diff --git a/.env b/.env new file mode 100644 index 0000000..1cb6480 --- /dev/null +++ b/.env @@ -0,0 +1,316 @@ +AUTHELIA_CLIENT_ID="" +RSS_SUBSCRIPTION_LIMIT_PER_USER= +YANDEX_CUSTOM_NAME= +DUENDE_IDS6_CUSTOM_NAME= +NEXT_PUBLIC_CREDENTIALS_ENABLED= +NEXT_PUBLIC_NETLIFY_ENABLED= +NEXT_PUBLIC_FACEIT_ENABLED= +FUSIONAUTH_CLIENT_ID= +PROXY_USERNAME= +ATLASSIAN_SCOPE= +DUENDE_IDS6_ISSUER= +VK_CUSTOM_NAME= +BOX_CUSTOM_NAME= +AUTHELIA_WELLKNOWN_URL="" +DATABASE_URL= +NEXT_PUBLIC_GITHUB_ENABLED= +NEXT_PUBLIC_FACEBOOK_ENABLED= +NEXT_PUBLIC_WIKIMEDIA_ENABLED= +COGNITO_CLIENT_ID= +BASE_URL= +ATLASSIAN_CLIENT_ID= +NEXT_PUBLIC_IDS4_ENABLED= +OLLAMA_MODEL= +SALESFORCE_CLIENT_ID= +OKTA_CUSTOM_NAME= +PDF_MAX_BUFFER= +NEXT_PUBLIC_APPLE_ENABLED= +SPACES_FORCE_PATH_STYLE= +ZOHO_CLIENT_SECRET= +NEXT_PUBLIC_ONELOGIN_ENABLED= +NEXT_PUBLIC_SALESFORCE_ENABLED= +GITLAB_CUSTOM_NAME= +POSTGRES_PASSWORD=postgres_pwd +NETLIFY_CLIENT_SECRET= +PATREON_CLIENT_ID= +DISABLE_PRESERVATION= +NEXT_PUBLIC_PIPEDRIVE_ENABLED= +EMAIL_SERVER= +NEXT_PUBLIC_SLACK_ENABLED= +COGNITO_ISSUER= +SPOTIFY_CUSTOM_NAME= +PAGINATION_TAKE_COUNT= +MAILRU_CLIENT_SECRET= +DROPBOX_CLIENT_SECRET= +SPOTIFY_CLIENT_SECRET= +PLAYWRIGHT_WS_URL= +NEXT_PUBLIC_OSU_ENABLED= +SALESFORCE_CUSTOM_NAME= +TEXT_CONTENT_LIMIT= +LINKEDIN_CUSTOM_NAME= +AZURE_AD_CLIENT_SECRET= +EVEONLINE_CLIENT_SECRET= +GITLAB_CLIENT_SECRET= +ANTHROPIC_API_KEY= +DISCORD_CLIENT_SECRET= +NEXTAUTH_URL=http://localhost:3000/api/v1/auth +NEXT_PUBLIC_MAX_FILE_BUFFER= +NEXT_PUBLIC_FRESHBOOKS_ENABLED= +FOURSQUARE_CLIENT_SECRET= +NEXT_PUBLIC_KAKAO_ENABLED= +PATREON_CUSTOM_NAME= +NEXT_PUBLIC_DUENDE_IDS6_ENABLED= +UNITED_EFFECTS_ISSUER= +STORAGE_FOLDER= +GOOGLE_CLIENT_ID= +DROPBOX_CLIENT_ID= +NEXT_PUBLIC_ADMIN= +OPENAI_API_KEY= +NEXT_PUBLIC_FORTYTWO_ENABLED= +GITLAB_AUTH_URL= +SLACK_CLIENT_SECRET= +IDS4_ISSUER= +ZITADEL_ISSUER= +OPENAI_MODEL= +ZOOM_CLIENT_ID= +ONELOGIN_CLIENT_SECRET= +NEXT_PUBLIC_LINE_ENABLED= +DUENDE_IDS6_CLIENT_SECRET= +NEXT_PUBLIC_RSS_POLLING_INTERVAL_MINUTES= +NEXT_PUBLIC_PINTEREST_ENABLED= +ONELOGIN_ISSUER= +MEILI_HOST= +ZOOM_CUSTOM_NAME= +OSU_CUSTOM_NAME= +COINBASE_CLIENT_SECRET= +AZURE_AD_TENANT_ID= +COINBASE_CLIENT_ID= +BATTLENET_CLIENT_ID= +DISCORD_CLIENT_ID= +NEXT_PUBLIC_PATREON_ENABLED= +IDS4_CLIENT_SECRET= +NEXT_PUBLIC_AUTHELIA_ENABLED="" +NEXT_PUBLIC_BATTLENET_ENABLED= +NEXT_PUBLIC_SPOTIFY_ENABLED= +AZURE_AD_B2C_CLIENT_SECRET= +MEILI_TIMEOUT= +NEXT_PUBLIC_COGNITO_ENABLED= +FRESHBOOKS_CUSTOM_NAME= +BUNGIE_API_KEY= +WIKIMEDIA_CLIENT_ID= +GOOGLE_CLIENT_SECRET= +OSU_CLIENT_SECRET= +NEXT_PUBLIC_DISABLE_REGISTRATION= +NEXT_PUBLIC_GOOGLE_ENABLED= +LINE_CUSTOM_NAME= +NEXT_PUBLIC_DEMO_PASSWORD= +NEXT_PUBLIC_DEMO= +NETLIFY_CUSTOM_NAME= +DROPBOX_CUSTOM_NAME= +OSSO_ISSUER= +CUSTOM_OPENAI_BASE_URL= +PINTEREST_CUSTOM_NAME= +NEXT_PUBLIC_DISCORD_ENABLED= +HUBSPOT_CLIENT_SECRET= +AUTHENTIK_CLIENT_ID= +NEXT_PUBLIC_YANDEX_ENABLED= +BATTLENET_ISSUER= +GOOGLE_CUSTOM_NAME= +FACEIT_CLIENT_SECRET= +STRAVA_CLIENT_SECRET= +NEXT_PUBLIC_FUSIONAUTH_ENABLED= +FRESHBOOKS_CLIENT_ID= +FUSIONAUTH_ISSUER= +UNITED_EFFECTS_CUSTOM_NAME= +GITHUB_CUSTOM_NAME= +SPACES_KEY= +KAKAO_CUSTOM_NAME= +AUTHENTIK_CLIENT_SECRET= +NEXT_PUBLIC_AUTH0_ENABLED= +AUTOSCROLL_TIMEOUT= +AZURE_AD_B2C_PRIMARY_USER_FLOW= +PDF_MARGIN_TOP= +AZURE_MODEL= +FACEIT_CLIENT_ID= +AUTHENTIK_ISSUER= +WIKIMEDIA_CUSTOM_NAME= +OSU_CLIENT_ID= +IGNORE_HTTPS_ERRORS= +NEXT_PUBLIC_OKTA_ENABLED= +VK_CLIENT_SECRET= +FACEIT_CUSTOM_NAME= +BOX_CLIENT_SECRET= +WIKIMEDIA_CLIENT_SECRET= +AZURE_API_KEY= +NEXT_PUBLIC_STRAVA_ENABLED= +AUTH0_CUSTOM_NAME= +ZITADEL_CLIENT_ID= +NEXT_PUBLIC_BOX_ENABLED= +PLAYWRIGHT_LAUNCH_OPTIONS_EXECUTABLE_PATH= +NEXT_PUBLIC_ZOHO_ENABLED= +NEXT_PUBLIC_EVEONLINE_ENABLED= +BUNGIE_CLIENT_ID= +NEXT_PUBLIC_MAILCHIMP_ENABLED= +DUENDE_IDS6_CLIENT_ID= +YANDEX_CLIENT_SECRET= +FOURSQUARE_APIVERSION= +AZURE_AD_CLIENT_ID= +MEILI_MASTER_KEY= +INDEX_TAKE_COUNT= +HUBSPOT_CLIENT_ID= +YANDEX_CLIENT_ID= +PROXY= +KEYCLOAK_CLIENT_ID= +TODOIST_CLIENT_SECRET= +NEXT_PUBLIC_ATLASSIAN_ENABLED= +IDS4_CUSTOM_NAME= +VK_CLIENT_ID= +BOX_CLIENT_ID= +GITLAB_CLIENT_ID= +EMAIL_FROM= +ZOHO_CLIENT_ID= +COGNITO_CLIENT_SECRET= +PINTEREST_CLIENT_SECRET= +NEXT_PUBLIC_DROPBOX_ENABLED= +NEXT_PUBLIC_REDDIT_ENABLED= +PIPEDRIVE_CLIENT_SECRET= +SCREENSHOT_MAX_BUFFER= +AUTHENTIK_CUSTOM_NAME= +MAX_LINKS_PER_USER= +NEXT_PUBLIC_AUTHENTIK_ENABLED= +FACEBOOK_CLIENT_ID= +NEXTAUTH_SECRET=netauth_pwd +MONOLITH_CUSTOM_OPTIONS= +ZOHO_CUSTOM_NAME= +SPACES_REGION= +CUSTOM_OPENAI_NAME= +READABILITY_MAX_BUFFER= +NEXT_PUBLIC_VK_ENABLED= +UNITED_EFFECTS_CLIENT_SECRET= +FACEBOOK_CUSTOM_NAME= +DISABLE_NEW_SSO_USERS= +NEXT_PUBLIC_ZITADEL_ENABLED= +PREVIEW_MAX_BUFFER= +KEYCLOAK_CUSTOM_NAME= +NEXT_PUBLIC_OSSO_ENABLED= +SPOTIFY_CLIENT_ID= +AZURE_AD_B2C_CLIENT_ID= +OSSO_CLIENT_ID= +MAILCHIMP_CLIENT_ID= +IGNORE_URL_SIZE_LIMIT= +NEXT_PUBLIC_KEYCLOAK_ENABLED= +ONELOGIN_CUSTOM_NAME= +DISCORD_CUSTOM_NAME= +ZOOM_CLIENT_SECRET= +NEXT_PUBLIC_MAILRU_ENABLED= +LINKEDIN_CLIENT_SECRET= +NAVER_CUSTOM_NAME= +NEXT_PUBLIC_ZOOM_ENABLED= +OSSO_CLIENT_SECRET= +MAILCHIMP_CLIENT_SECRET= +MONOLITH_MAX_BUFFER= +AUTH0_CLIENT_SECRET= +PIPEDRIVE_CUSTOM_NAME= +NEXT_PUBLIC_TODOIST_ENABLED= +NEXT_PUBLIC_OLLAMA_ENDPOINT_URL= +PINTEREST_CLIENT_ID= +PDF_MARGIN_BOTTOM= +AUTH0_ISSUER= +FUSIONAUTH_CLIENT_SECRET= +NEXT_PUBLIC_COINBASE_ENABLED= +ARCHIVE_TAKE_COUNT= +IMPORT_LIMIT= +REDDIT_CLIENT_ID= +LINE_CLIENT_ID= +NEXT_PUBLIC_TWITCH_ENABLED= +NEXT_PUBLIC_UNITED_EFFECTS_ENABLED= +EVEONLINE_CLIENT_ID= +ATLASSIAN_CLIENT_SECRET= +MAILRU_CLIENT_ID= +ZITADEL_CLIENT_SECRET= +FORTYTWO_CUSTOM_NAME= +WORDPRESS_CLIENT_ID= +REDDIT_CUSTOM_NAME= +IDS4_CLIENT_ID= +ANTHROPIC_MODEL= +EVEONLINE_CUSTOM_NAME= +FORTYTWO_CLIENT_ID= +FORTYTWO_CLIENT_SECRET= +TWITCH_CUSTOM_NAME= +PROXY_PASSWORD= +NEXT_PUBLIC_AZURE_AD_B2C_ENABLED= +STRAVA_CUSTOM_NAME= +COINBASE_CUSTOM_NAME= +NEXT_PUBLIC_WORDPRESS_ENABLED= +BROWSER_TIMEOUT= +MAX_WORKERS= +BUNGIE_CUSTOM_NAME= +SLACK_CLIENT_ID= +KEYCLOAK_CLIENT_SECRET= +BATTLENET_CUSTOM_NAME= +LINKEDIN_CLIENT_ID= +FOURSQUARE_CLIENT_ID= +NAVER_CLIENT_ID= +IGNORE_UNAUTHORIZED_CA= +AZURE_RESOURCE_NAME= +NAVER_CLIENT_SECRET= +NEXT_PUBLIC_EMAIL_PROVIDER= +TODOIST_CUSTOM_NAME= +FACEBOOK_CLIENT_SECRET= +FRESHBOOKS_CLIENT_SECRET= +NEXT_PUBLIC_FOURSQUARE_ENABLED= +WORDPRESS_CLIENT_SECRET= +GITHUB_ID= +NETLIFY_CLIENT_ID= +FUSIONAUTH_CUSTOM_NAME= +SEARCH_FILTER_LIMIT= +AUTH0_CLIENT_ID= +TWITCH_CLIENT_SECRET= +KEYCLOAK_ISSUER= +NEXT_PUBLIC_BUNGIE_ENABLED= +NEXT_PUBLIC_HUBSPOT_ENABLED= +APPLE_ID= +LINE_CLIENT_SECRET= +FUSIONAUTH_TENANT_ID= +AZURE_AD_B2C_TENANT_NAME= +KAKAO_CLIENT_SECRET= +AUTHELIA_CLIENT_SECRET="" +HUBSPOT_CUSTOM_NAME= +OKTA_CLIENT_ID= +STRAVA_CLIENT_ID= +UNITED_EFFECTS_CLIENT_ID= +GITHUB_SECRET= +PROXY_BYPASS= +APPLE_CUSTOM_NAME= +ZITADEL_CUSTOM_NAME= +PIPEDRIVE_CLIENT_ID= +REDDIT_CLIENT_SECRET= +OKTA_CLIENT_SECRET= +NEXT_PUBLIC_AZURE_AD_ENABLED= +SPACES_ENDPOINT= +ONELOGIN_CLIENT_ID= +OPENROUTER_MODEL= +BATTLENET_CLIENT_SECRET= +SPACES_BUCKET_NAME= +OKTA_ISSUER= +SALESFORCE_CLIENT_SECRET= +TWITCH_CLIENT_ID= +SPACES_SECRET= +BUNGIE_CLIENT_SECRET= +NEXT_PUBLIC_DEMO_USERNAME= +NEXT_PUBLIC_LINKEDIN_ENABLED= +WORDPRESS_CUSTOM_NAME= +PATREON_CLIENT_SECRET= +KAKAO_CLIENT_ID= +APPLE_SECRET= +OPENROUTER_API_KEY= +FOURSQUARE_CUSTOM_NAME= +COGNITO_CUSTOM_NAME= +OSSO_CUSTOM_NAME= +MAILCHIMP_CUSTOM_NAME= +SLACK_CUSTOM_NAME= +TODOIST_CLIENT_ID= +NEXT_PUBLIC_NAVER_ENABLED= +NEXT_PUBLIC_GITLAB_ENABLED= +ATLASSIAN_CUSTOM_NAME= +MAILRU_CUSTOM_NAME= diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3e82913 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +services: + postgres: + image: postgres:16-alpine + env_file: .env + restart: always + volumes: + - /data/pgdata:/var/lib/postgresql/data + linkwarden: + env_file: .env + environment: + - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + restart: always + # build: . # uncomment to build from source + image: ghcr.io/linkwarden/linkwarden:latest # comment to build from source + ports: + - 3000:3000 + volumes: + - /data/data:/data/data + depends_on: + - postgres + - meilisearch + meilisearch: + image: getmeili/meilisearch:v1.12.8 + restart: always + env_file: + - .env + volumes: + - /data/meili_data:/meili_data diff --git a/install.sh b/install.sh index 7f3dc41..922ab88 100755 --- a/install.sh +++ b/install.sh @@ -1,8 +1,18 @@ #!/bin/bash -curl -O https://raw.githubusercontent.com/linkwarden/linkwarden/refs/heads/main/docker-compose.yml -curl -L https://raw.githubusercontent.com/linkwarden/linkwarden/refs/heads/main/.env.sample -o ".env" +# Helper function to check if a command exists +command_exists() { + command -v "$1" >/dev/null 2>&1 +} +# Check if the first argument is "clean" +if [[ "$1" == "clean" ]]; then + echo "Downloading files with curl..." + curl -O https://raw.githubusercontent.com/linkwarden/linkwarden/refs/heads/main/docker-compose.yml + curl -L https://raw.githubusercontent.com/linkwarden/linkwarden/refs/heads/main/.env.sample -o ".env" +else + echo "Skipping curl download. Run with 'clen' to enable." +fi # Helper function to check a command command_exists() {