Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
4b5f107
feat: allow deploying to hetzner
tefkah Apr 2, 2026
5769e32
chore: format
tefkah Apr 2, 2026
070aa8d
fix: ci issue
tefkah Apr 2, 2026
d83286b
fix: use sentry auth token
tefkah Apr 2, 2026
69ff995
fix: use sentry auth token
tefkah Apr 2, 2026
d18fd3f
fix: don't secret it like that
tefkah Apr 2, 2026
9b073e2
fix: try and pass through sentry_Auth
tefkah Apr 2, 2026
e894fd2
fix: try again
tefkah Apr 2, 2026
facea38
fix: also filter on label
tefkah Apr 2, 2026
52b38e0
fix: push to kf
tefkah Apr 2, 2026
fe19959
fix: fix even more
tefkah Apr 2, 2026
307af6b
fix: fix even more
tefkah Apr 2, 2026
a35f173
ugh
tefkah Apr 2, 2026
e5a56cd
fix: expedite testing
tefkah Apr 2, 2026
fd2d9ba
fix: reencrypt
tefkah Apr 2, 2026
72fe9de
fix: wait for rollouot
tefkah Apr 2, 2026
a3b5b38
fix: don't replicate one off containers
tefkah Apr 6, 2026
7c71256
fix: use .env
tefkah Apr 6, 2026
095be87
fix: update images
tefkah Apr 6, 2026
1dbff9b
fix: don't use env vars in env
tefkah Apr 6, 2026
85d5f81
fix: rename assets env vars
tefkah Apr 6, 2026
cbc8e65
fix: renable full pr ci to rebuild stuff
tefkah Apr 6, 2026
6da045d
fix: go back to quick preview again
tefkah Apr 6, 2026
fbb2676
fix: rm on demand tls
tefkah Apr 6, 2026
d238cad
fix: rm s3 thing
tefkah Apr 6, 2026
eb4c075
fix: tls internal?
tefkah Apr 6, 2026
fdb4238
fix: slightly better on_demand
tefkah Apr 6, 2026
8853e47
fix: match ask
tefkah Apr 6, 2026
2c234f5
fix: correct ask jesus
tefkah Apr 6, 2026
344c7f0
fix: correct matches query
tefkah Apr 6, 2026
646c8f5
fix: consistent naming, wait for platform
tefkah Apr 6, 2026
8acc438
fix: properly indent
tefkah Apr 6, 2026
4116a64
feat: run migrations during instrumentation rather than a separate se…
tefkah Apr 6, 2026
6870ae2
fix: rerun builds
tefkah Apr 6, 2026
1792116
fix: also reset and seed
tefkah Apr 6, 2026
cc36e7e
fix: speed up test
tefkah Apr 6, 2026
e65d3f7
fix: add mechanism to skip autocache during seed
tefkah Apr 6, 2026
b40f1a9
fix: preview again...
tefkah Apr 6, 2026
649e4db
fix: make logic make sense
tefkah Apr 6, 2026
5376080
fix: inline html file
tefkah Apr 6, 2026
fbd7b87
fix: clear cache on seed
tefkah Apr 6, 2026
feb5357
fix: test setup errors
tefkah Apr 6, 2026
091864e
fix: double escape string
tefkah Apr 9, 2026
249de57
fix: better infra
tefkah Apr 9, 2026
c61e386
fix(skip-build): test
tefkah Apr 9, 2026
66899b4
fix: skip skip
tefkah Apr 9, 2026
fbd7c98
fix(skip-build): debug gateway
tefkah Apr 9, 2026
3fb1cf7
fix(skip-build): common
tefkah Apr 9, 2026
9e28c53
fix(skip-build): again!
tefkah Apr 9, 2026
b0d649d
fix: cacheing, correct build
tefkah Apr 9, 2026
b9c00ff
fix: update all the actions (danger)
tefkah Apr 9, 2026
fca4270
fix: remove preview from domain name
tefkah Apr 9, 2026
61b3328
fix: add more dockerignore
tefkah Apr 9, 2026
f9c2bd2
fix(skip-build): force update
tefkah Apr 9, 2026
dfefe30
fix(skip-build): dnsrr
tefkah Apr 9, 2026
aebf8c2
fix: apply stuff
tefkah Apr 9, 2026
ccb8bb5
fix: aaa
tefkah Apr 9, 2026
ce3a6e6
fix(skip-build): on demand
tefkah Apr 9, 2026
ec63ebe
fix: tasks
tefkah Apr 9, 2026
03df205
fix(skip-build): whole other approach
tefkah Apr 9, 2026
376d303
fix: give slightly different name so i can test
tefkah Apr 9, 2026
c30fa08
fix: change name
tefkah Apr 9, 2026
0b0969f
feat: add prod env
tefkah Apr 13, 2026
dcc65eb
fix: remove minio from prod
tefkah Apr 13, 2026
ec52034
chore: merge
tefkah Apr 14, 2026
1688d34
fix: remove mention of custom caddy
tefkah Apr 14, 2026
568d57b
fix: readd sitebuilder image to test
tefkah Apr 14, 2026
3a9874a
fix: better error reporting
tefkah Apr 14, 2026
1e5204d
fix: cascade drop
tefkah Apr 14, 2026
d50ea14
fix: allow inbucket
tefkah Apr 14, 2026
4ee8bcd
fix: expose mock notify server port
tefkah Apr 14, 2026
cc42f5b
fix(skip-build): set env vars correctly
tefkah Apr 14, 2026
6f16004
fix: correct mock notify
tefkah Apr 14, 2026
276fe32
fix: fix things
tefkah Apr 14, 2026
a0eecf7
fix: debug automation run
tefkah Apr 14, 2026
81e9970
fix: invert prose in dark mode
tefkah Apr 14, 2026
5bbd639
fix: correct notify subpath
tefkah Apr 14, 2026
6427290
feat: set correct urls for mock-notify
tefkah Apr 14, 2026
2d80b58
fix: make coar page dynamic
tefkah Apr 14, 2026
786c4f5
fix: manual deploy action
tefkah Apr 20, 2026
f18369a
fix: temp add on pull_request
tefkah Apr 20, 2026
7b89131
fix: pr write
tefkah Apr 20, 2026
65bc20d
fix(skip-build): pr write
tefkah Apr 20, 2026
b414253
fix(skip-build): no write
tefkah Apr 20, 2026
03d0a89
fix(skip-build): correct host
tefkah Apr 20, 2026
46f7ec5
fix(skip-build): race condition
tefkah Apr 20, 2026
9fffcae
fix(skip-build): prod host
tefkah Apr 20, 2026
a56b097
fix: correct sandbox and prod setup
tefkah Apr 20, 2026
98d1995
fix: redeploy preview
tefkah Apr 20, 2026
da7288f
fix: reencrypt preview for good measure
tefkah Apr 20, 2026
d23b8ee
fix: add correct sandbox env
tefkah Apr 21, 2026
91ca98b
fix: sandbox caddy
tefkah Apr 21, 2026
115880b
fix: make prod www.pubstar.org
tefkah Apr 21, 2026
21ff649
fix: do what the robot says
tefkah Apr 21, 2026
fb2c763
fix: app instead
tefkah Apr 21, 2026
a01c83a
fix(skip-build): use different caddy stack
tefkah Apr 21, 2026
5680dda
fix: change conditional to be for sitebuilder
tefkah Apr 21, 2026
406569a
fix: use new pubstar bucket
tefkah Apr 21, 2026
0a186a2
fix: add migration to rewrite assets.app.pubpub.org url
tefkah Apr 21, 2026
9bd81e7
fix: trust the robot blindly to rewrite the sites
tefkah Apr 21, 2026
7907226
fix: explicitly set lastModifiedBy
tefkah Apr 21, 2026
f629fe5
fix: actually fix
tefkah Apr 21, 2026
291ecf0
fix: improvements in deployability
tefkah Apr 22, 2026
f179c5e
fix: better migration of graphile
tefkah Apr 22, 2026
a71b45f
feat: migrations panel, /superadmin page
tefkah Apr 22, 2026
25e9e22
fix: lint
tefkah Apr 22, 2026
fee9dd5
fix: env
tefkah Apr 22, 2026
992df60
chore: fix types
tefkah Apr 22, 2026
c15198b
fix: fix migration
tefkah Apr 22, 2026
cbc4296
fix: fix deploy lock
tefkah Apr 22, 2026
0378de7
fix: allow https://assets.pubstar.org style urls
tefkah Apr 22, 2026
1026cca
fix: simpler
tefkah Apr 23, 2026
883c91d
feat: show links to email, enable email and upload
tefkah Apr 23, 2026
8c25796
chore: lint
tefkah Apr 23, 2026
ce85567
fix: untemporary all files, not just first, and return public url
tefkah Apr 23, 2026
519a1fc
fix: dnot use hallucinated host_regexp
tefkah Apr 23, 2026
6e06dd5
fix: correct smtp enpoints
tefkah Apr 23, 2026
796b61a
fix: remove mailgun prefix
tefkah Apr 23, 2026
bf863d4
fix: use ses
tefkah Apr 23, 2026
207ecef
fix: correct .env
tefkah Apr 23, 2026
e974f5d
fix: require smtp from
tefkah Apr 23, 2026
b9ad94b
fix: aaaaa
tefkah Apr 23, 2026
4322e3b
fix: correct name
tefkah Apr 23, 2026
ee0fd59
fix: allow insecure email on sandbox/preview
tefkah Apr 28, 2026
e1ad47a
fix: don't skip validation, it breaks test
tefkah Apr 28, 2026
d00689a
fix(skip-build): format
tefkah Apr 28, 2026
20fc9fd
fix(skip-build): correct port for inbucket
tefkah Apr 28, 2026
615bde9
fix: set env for sentry, allow disabling sentry
tefkah Apr 28, 2026
5d0f690
fix: superadmin redirect test
tefkah Apr 28, 2026
b9f157f
fix: coar-notify-seed
tefkah Apr 28, 2026
c750a56
fix: fix incorrect migration
tefkah Apr 28, 2026
5c4cf67
fix: add maskfile
tefkah Apr 28, 2026
4fe1873
fix: upgrade postgres to 16
tefkah Apr 29, 2026
f2e7991
fix: separate dirs for separate stacks
tefkah Apr 29, 2026
32801f0
fix: update maskfile for dump
tefkah Apr 29, 2026
4d97f9d
fix: begone terraform
tefkah Apr 29, 2026
48af705
fix: remove all buildjournalsite action runs
tefkah Apr 29, 2026
1051eb5
fix: pubpub_url/hostname -> pubstar_url
tefkah Apr 29, 2026
cb90600
fix: more pubstar->pubpub
tefkah Apr 29, 2026
d33e2db
fix: rencrypt
tefkah Apr 29, 2026
7628a50
fix: lint
tefkah Apr 29, 2026
7bb59a7
feat: add backup job
tefkah Apr 29, 2026
0e7d326
fix: proper backups
tefkah Apr 30, 2026
d9abc70
fix: dockerfile
tefkah Apr 30, 2026
0b5eb1a
fix(skip-build): add pubstar_url
tefkah Apr 30, 2026
f36fa36
fix: each hour
tefkah Apr 30, 2026
24d4b4d
feat: reset previews etc
tefkah Apr 30, 2026
e8994b9
fix(skip-build): only one closing '
tefkah Apr 30, 2026
037ac1f
fix: .env
tefkah Apr 30, 2026
9258aae
fix: backup env fr
tefkah Apr 30, 2026
f3a840c
fix: pass correct preview host
tefkah Apr 30, 2026
b6b568e
fix: correct name omg
tefkah Apr 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,9 @@
**/values.dev.yaml
**/build
**/dist
**/.github
**/.turbo
**/.infra

LICENSE
README.md
39 changes: 24 additions & 15 deletions .env.docker-compose.dev
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
# garage admin token for init script
GARAGE_ADMIN_TOKEN=dev_admin_token

ASSETS_BUCKET_NAME=assets.v7.pubpub.org
ASSETS_UPLOAD_KEY=pubpubuser
ASSETS_UPLOAD_SECRET_KEY=pubpubpass
# set to same as above for s3fs/caddy to work
AWS_ACCESS_KEY_ID=pubpubuser
AWS_SECRET_ACCESS_KEY=pubpubpass

ASSETS_REGION=garage
S3_BUCKET_NAME=assets.pubstar.org
S3_ACCESS_KEY=pubstaruser
S3_SECRET_KEY=pubstarpass
S3_REGION=us-east-1
# internal endpoint used by backend services running in Docker
ASSETS_STORAGE_ENDPOINT=http://garage:3900
S3_ENDPOINT=http://minio:9000
# public endpoint used for signed URLs accessible from browsers
ASSETS_PUBLIC_ENDPOINT=http://localhost:3900
S3_PUBLIC_ENDPOINT=http://localhost:9000

MINIO_ROOT_USER=pubstar-admin
MINIO_ROOT_PASSWORD=pubstar-admin

S3_BACKUP_BUCKET=backups.pubstar.org
S3_BACKUP_ACCESS_KEY=pubstarbackupuser
S3_BACKUP_SECRET_KEY=pubstarbackuppass
S3_BACKUP_REGION=us-east-1
S3_BACKUP_ENDPOINT=http://minio:9000
S3_BACKUP_KEY_PREFIX=pg-backups

POSTGRES_PORT=54322
POSTGRES_USER=postgres
Expand All @@ -36,14 +42,17 @@ DATABASE_URL=postgresql://postgres:postgres@db:5432/postgres


JWT_SECRET=xxx
MAILGUN_SMTP_PASSWORD=xxx
SMTP_PASSWORD=xxx
SMTP_USERNAME=omitted
SMTP_HOST=inbucket
SMTP_PORT=2500
SMTP_FROM=dev@pubstar.org
SMTP_FROM_NAME=Pubstar Team
GCLOUD_KEY_FILE=xxx

MAILGUN_SMTP_HOST=inbucket
MAILGUN_SMTP_PORT=2500
# this needs to be localhost:54324 instead of inbucket:9000 bc we are almost always running the integration tests from outside the docker network
INBUCKET_URL=http://localhost:54324
MAILGUN_SMTP_USERNAME=omitted
OTEL_SERVICE_NAME=core.core
PUBPUB_URL=http://localhost:3000
PUBSTAR_HOSTNAME=http://localhost:3000
PUBSTAR_URL=http://localhost:3000
API_KEY=xxx
55 changes: 55 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Base environment configuration
# Copy this to .env and customize as needed
# Values here are defaults that work across development, testing, and self-hosting

# Database configuration
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres
POSTGRES_PORT=54322

# Cache configuration
VALKEY_HOST=localhost
VALKEY_PORT=6379

# Minio configuration
MINIO_ROOT_USER=pubstar-admin
MINIO_ROOT_PASSWORD=pubstar-admin
S3_BUCKET_NAME=assets.pubpub.local
S3_ACCESS_KEY=pubpubuser
S3_SECRET_KEY=pubpubpass
S3_REGION=us-east-1
# storage endpoint used for signed uploads and server-side s3 calls
S3_ENDPOINT=http://localhost:9000
# optional public endpoint used for generated asset urls
# if hostname matches S3_BUCKET_NAME, urls are generated as:
# https://assets.pubstar.org/<key>
# otherwise they are generated as:
# <endpoint>/<bucket>/<key>
# S3_PUBLIC_ENDPOINT=https://assets.pubstar.org

# private backup storage config
S3_BACKUP_BUCKET=backups.pubstar.local
S3_BACKUP_ACCESS_KEY=pubstarbackupuser
S3_BACKUP_SECRET_KEY=pubstarbackuppass
S3_BACKUP_REGION=us-east-1
S3_BACKUP_ENDPOINT=http://localhost:9000
S3_BACKUP_KEY_PREFIX=pg-backups

# Email configuration
SMTP_HOST=localhost
SMTP_PORT=54325
SMTP_USERNAME=xxx
SMTP_PASSWORD=xxx

# Application configuration
API_KEY=super_secret_key
PUBSTAR_URL=http://localhost:3000

# Other configuration
OTEL_SERVICE_NAME=pubstar-v7-dev
HONEYCOMB_API_KEY=xxx

# Volume types (can be overridden per environment)
DB_VOLUME_TYPE=postgres_data
MINIO_VOLUME_TYPE=minio_data
69 changes: 0 additions & 69 deletions .github/workflows/awsdeploy.yml

This file was deleted.

10 changes: 5 additions & 5 deletions .github/workflows/build-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ jobs:
with:
# necessary in order to show latest updates in docs
fetch-depth: 0
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Install Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22.13.1

- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5
name: Install pnpm
with:
run_install: false
Expand All @@ -34,15 +34,15 @@ jobs:
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT

- name: Setup pnpm cache
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ${{ steps.get-store-path.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

# - name: Cache turbo
# uses: actions/cache@v4
# uses: actions/cache@v5
# with:
# path: .turbo
# key: ${{ runner.os }}-turbo-${{ github.sha }}
Expand Down
124 changes: 62 additions & 62 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,77 +1,77 @@
name: "CI"
name: 'CI'
on:
workflow_call:
inputs:
image-tag-override: # example: latest, 7037e37a18a379d583164441baff9e594cc479f8
type: string # use this to force a container version.
workflow_dispatch:
workflow_call:
inputs:
image-tag-override: # example: latest, 7037e37a18a379d583164441baff9e594cc479f8
type: string # use this to force a container version.
workflow_dispatch:

env:
CI: true
AWS_REGION: us-east-1
CI: true
AWS_REGION: us-east-1

ECR_REPOSITORY_PREFIX: pubpub-v7
CONTAINER_NAME: core
ECR_REPOSITORY_PREFIX: pubstar-v7
CONTAINER_NAME: core

jobs:
ci:
timeout-minutes: 15
runs-on: ubuntu-latest
strategy:
matrix:
task:
- lint:ci
- type-check
- test-run
env:
COMPOSE_FILE: docker-compose.test.yml
ENV_FILE: .env.docker-compose.dev
steps:
- name: Checkout
uses: actions/checkout@v4
ci:
timeout-minutes: 15
runs-on: ubuntu-latest
strategy:
matrix:
task:
- lint:ci
- type-check
- test-run
env:
COMPOSE_FILE: docker-compose.test.yml
ENV_FILE: .env.docker-compose.dev
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 22.13.1
- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22.13.1

- uses: pnpm/action-setup@v4
name: Install pnpm
with:
run_install: false
- uses: pnpm/action-setup@v5
name: Install pnpm
with:
run_install: false

- name: Get pnpm store directory
id: get-store-path
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
- name: Get pnpm store directory
id: get-store-path
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.get-store-path.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup pnpm cache
uses: actions/cache@v5
with:
path: ${{ steps.get-store-path.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

# to cache p:build, format, lint, type-check and test-run
- name: Setup turbo cache
uses: actions/cache@v4
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
# to cache p:build, format, lint, type-check and test-run
- name: Setup turbo cache
uses: actions/cache@v5
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-

- name: Install dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Install dependencies
run: pnpm install --frozen-lockfile --prefer-offline

- name: p:build
run: pnpm p:build
- name: p:build
run: pnpm p:build

- name: Setup test dependencies
if: matrix.task == 'test-run'
run: pnpm test:setup
- name: Setup test dependencies
if: matrix.task == 'test-run'
run: pnpm test:setup

- name: Run task
run: NODE_ENV=test pnpm ${{ matrix.task }}
- name: Run task
run: NODE_ENV=test pnpm ${{ matrix.task }}
Loading
Loading