Skip to content

site service: add --config-file support - #149

Merged
oschwartz10612 merged 1 commit into
fosrl:mainfrom
itsjxck:service-install-site-config-file
Sep 23, 2026
Merged

oschwartz10612 merged 1 commit into
fosrl:mainfrom
itsjxck:service-install-site-config-file

Conversation

@itsjxck

@itsjxck itsjxck commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Community Contribution License Agreement

By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.

AI Disclosure

Claude Fable 5.1 was used to make this change

Description

Pass --config-file through to the service as CONFIG_FILE (resolved to an absolute path, since the service can run from a different working directory). When it is set, --id/--secret/--endpoint become optional; any given flag from that set will still override the config file's value due to env vars being applied after loading config gile in newt. Only non-empty values are written into the service environment.

How to test?

Verifies that --config-file is passed through to the service and that --id/--secret/--endpoint are no longer required when it is set. No real Pangolin server needed.

  1. Build: make build
  2. Create a dummy config with a fake endpoint:
   mkdir -p /tmp/pgtest && cat > /tmp/pgtest/site.json <<'EOF'
   {"endpoint":"https://invalid.example.test","id":"dummy-id","secret":"dummy-secret"}
   EOF
  1. Install using only the config file (relative path, to check it's made absolute):
cd /tmp/pgtest && sudo /path/to/bin/pangolin service install site --config-file site.json
  1. Check the service picked the file up:
sudo pangolin service logs site -n 20

Expected: repeated Failed to connect ... https://invalid.example.test ... no such host — that endpoint exists only in the config file, so it must have been loaded via CONFIG_FILE.
5. Clean up:

sudo pangolin service uninstall site && rm -rf /tmp/pgtest

Pass --config-file through to the service as CONFIG_FILE (resolved to an
absolute path, since the service runs from a different cwd). When it is
set, --id/--secret/--endpoint become optional; any given still override
the file via the env layer. Only non-empty values are written into the
service environment.
@oschwartz10612

Copy link
Copy Markdown
Member

Thanks so much!

@oschwartz10612
oschwartz10612 merged commit 4dbcb21 into fosrl:main Sep 23, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants