Skip to content

Commit a956629

Browse files
committed
Add self hosting instructions
1 parent c91dd4f commit a956629

File tree

8 files changed

+102
-62
lines changed

8 files changed

+102
-62
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
<a href="https://github.com/techulus/changes-page/issues">Issues</a>
1414
·
1515
<a href="https://techulus.atlassian.net/servicedesk/customer/portal/1">Support</a>
16+
·
17+
<a href="SELF-HOSTING.md">Self-Hosting</a>
1618
</p>
1719
</p>
1820

SELF-HOSTING.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Self-Hosting Changes.Page
2+
3+
This guide will help you set up and deploy Changes.Page on your own infrastructure.
4+
5+
## Database Setup
6+
7+
You have two options for setting up the database:
8+
9+
### Option 1: Local Supabase (Recommended for Development)
10+
11+
Follow the official Supabase self-hosting guide using Docker:
12+
https://supabase.com/docs/guides/self-hosting/docker
13+
14+
### Option 2: Supabase Cloud
15+
16+
Create a new project at [supabase.com](https://supabase.com) and use the provided connection details.
17+
18+
## Application Deployment
19+
20+
The repository includes Docker Compose files for easy deployment of the applications.
21+
22+
1. Ensure you have Docker and Docker Compose installed
23+
2. Set up your environment variables in the respective `.env` files (see `.env.example` files in `apps/web` and `apps/page`)
24+
3. Run the applications using Docker Compose:
25+
26+
```sh
27+
docker-compose up -d
28+
```
29+
30+
## Feature Limitations
31+
32+
Please note the following limitations when self-hosting:
33+
34+
- **Billing**: Currently only supported through Stripe integration
35+
- **Custom Domains**: Only supported when deployed on Vercel
36+
- **AI Features**: All AI functionality is channeled through ManagePrompt and requires their service
37+
38+
## Environment Configuration
39+
40+
Make sure to configure the following in your environment files:
41+
42+
- Database connection details (Supabase)
43+
- Authentication keys
44+
- Stripe keys (if using billing features)
45+
- ManagePrompt API keys (if using AI features)
46+
- Any other third-party service credentials
47+
48+
For detailed environment variable setup, refer to the `.env.example` files in the respective app directories.
49+

apps/page/.env.example

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
NEXT_PUBLIC_SUPABASE_URL=
2+
NEXT_PUBLIC_SUPABASE_ANON_KEY=
3+
SUPABASE_SERVICE_ROLE_KEY=
4+
5+
# Inngest
6+
INNGEST_EVENT_KEY=
7+
8+
# Arcjet
9+
ARCJET_KEY=

apps/page/.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ yarn-error.log*
3535

3636
.env*
3737
.flaskenv*
38-
!.env.project
39-
!.env.vault
38+
!.env.example
4039

4140
# IDE
4241
.idea

apps/page/README.md

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,3 @@
11
## Pages App
22

33
This folder contains the pages app which renders user changelog pages.
4-
5-
### Environment Variables
6-
7-
```
8-
# Supabase details from https://app.supabase.io
9-
NEXT_PUBLIC_SUPABASE_URL=
10-
NEXT_PUBLIC_SUPABASE_ANON_KEY=
11-
SUPABASE_SERVICE_ROLE_KEY=
12-
13-
# Inngest
14-
INNGEST_EVENT_KEY=
15-
INNGEST_SIGNING_KEY=
16-
17-
# Arcjet
18-
ARCJET_KEY=
19-
```

apps/web/.env.example

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
NEXT_PUBLIC_PAGES_DOMAIN=http://localhost:3000
2+
3+
# Supabase details from https://app.supabase.io
4+
NEXT_PUBLIC_SUPABASE_URL=
5+
NEXT_PUBLIC_SUPABASE_ANON_KEY=
6+
SUPABASE_SERVICE_ROLE_KEY=
7+
8+
# Stripe credentials from https://dashboard.stripe.com/apikeys
9+
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
10+
STRIPE_SECRET_KEY=
11+
STRIPE_WEBHOOK_SECRET=
12+
STRIPE_PRICE_ID=
13+
EMAIL_NOTIFICATION_STRIPE_PRICE_ID=
14+
15+
# Custom domains
16+
VERCEL_AUTH_TOKEN=
17+
VERCEL_TEAM_ID=
18+
VERCEL_PAGES_PROJECT_ID=
19+
20+
# Postmark Emails
21+
POSTMARK_SERVER_KEY=
22+
POSTMARK_WEBHOOK_KEY=
23+
24+
# Inngest
25+
INNGEST_EVENT_KEY=
26+
INNGEST_SIGNING_KEY=
27+
28+
# Arcjet
29+
ARCJET_KEY=
30+
31+
# CMS
32+
NEXT_PUBLIC_SANITY_PROJECT_ID=jeixxcw8
33+
34+
# ManagePrompt
35+
MANAGEPROMPT_SECRET=
36+
MANAGEPROMPT_CHANGEGPT_WORKFLOW_ID=
37+
38+
# PostHog
39+
NEXT_PUBLIC_POSTHOG_KEY=
40+
NEXT_PUBLIC_POSTHOG_HOST=

apps/web/.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ yarn-error.log*
3535

3636
.env*
3737
.flaskenv*
38-
!.env.project
39-
!.env.vault
38+
!.env.example
4039

4140
# IDE
4241
.idea

apps/web/README.md

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,3 @@
11
## Web App
22

33
This folder contains the dashboard app for the project and all marketing pages.
4-
5-
### Environment Variables
6-
7-
```
8-
NEXT_PUBLIC_PAGES_DOMAIN=http://localhost:3000
9-
10-
# Supabase details from https://app.supabase.io
11-
NEXT_PUBLIC_SUPABASE_URL=
12-
NEXT_PUBLIC_SUPABASE_ANON_KEY=
13-
SUPABASE_SERVICE_ROLE_KEY=
14-
SUPABASE_WEBHOOK_KEY=
15-
16-
# Stripe credentials from https://dashboard.stripe.com/apikeys
17-
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
18-
STRIPE_SECRET_KEY=
19-
STRIPE_WEBHOOK_SECRET=
20-
STRIPE_PRICE_ID=
21-
EMAIL_NOTIFICATION_STRIPE_PRICE_ID=
22-
23-
# Open AI
24-
OPENAI_API_KEY=
25-
26-
# Custom domains
27-
VERCEL_AUTH_TOKEN=
28-
VERCEL_TEAM_ID=
29-
VERCEL_PAGES_PROJECT_ID=
30-
31-
# Postmark Emails
32-
POSTMARK_SERVER_KEY=
33-
POSTMARK_WEBHOOK_KEY=
34-
35-
# Inngest
36-
INNGEST_EVENT_KEY=
37-
INNGEST_SIGNING_KEY=
38-
39-
# CMS
40-
NEXT_PUBLIC_SANITY_PROJECT_ID=
41-
42-
# ManagePrompt
43-
MANAGEPROMPT_SECRET=
44-
MANAGEPROMPT_CHANGEGPT_WORKFLOW_ID=
45-
```

0 commit comments

Comments
 (0)