Skip to content

feat(deploy): marketplace scaffolds for Railway, Hostinger, DigitalOcean - #2244

Draft
reneaaron wants to merge 1 commit into
masterfrom
feat/marketplaces
Draft

feat(deploy): marketplace scaffolds for Railway, Hostinger, DigitalOcean#2244
reneaaron wants to merge 1 commit into
masterfrom
feat/marketplaces

Conversation

@reneaaron

Copy link
Copy Markdown
Member

Summary

Adds a deploy/ tree with one-click-deploy scaffolds for three VPS marketplaces, alongside the existing fly.toml and render.yaml. Goal: reach users who discover self-hosted apps through mainstream VPS catalogs rather than through bitcoin-native node distributions (umbrel, start9, etc.).

  • deploy/railway/ — scaffold doc for a "Deploy on Railway" button. Railway templates are dashboard-configured and shared as railway.com/template/<id> URLs, so the committable artifact is a spec of exactly what to configure + the button markdown to paste into the main README once a template ID exists.
  • deploy/hostinger/docker-compose.yml + Caddyfile + submission doc for the Hostinger VPS Application Catalog. Deployable as-is today on any Hostinger VPS with the Ubuntu 24.04 + Docker template; listing in the catalog requires BD outreach.
  • deploy/digitalocean/ — Packer template + cloud-init + systemd unit + Caddy config + provisioner/validator scripts following the digitalocean/marketplace-partners layout. Submits as a DigitalOcean Marketplace 1-Click App.

All three reuse ghcr.io/getalby/hub:latest — no Dockerfile or build-docker.yaml changes.

Open question

The DigitalOcean path is the heaviest artifact here (9 files, needs a Packer build + DO partner submission). A lightweight alternative: replace it with a single cloud-init user-data YAML that users paste into DO's "User Data" field when creating a droplet. Same provisioning, no Packer, no partner program, and the same file works on Hetzner / Linode / Vultr / any Ubuntu cloud. Tradeoff: no marketplace listing for DO-native discovery. Happy to swap on request.

Draft — not ready to merge

Each marketplace still needs work outside this PR before it's user-visible:

  • Railway: create the template in Railway's dashboard, then paste the button into the main README.md.
  • Hostinger: BD outreach to Hostinger partnerships to land the template in the Application Catalog.
  • DigitalOcean: apply to DO Partner Pod, run packer build against a DO account, open a PR against digitalocean/marketplace-partners.

Test plan

  • Hostinger: docker compose up -d in a fresh Ubuntu 24.04 VM — verify Hub reaches setup wizard on http://<vm-ip>:8080.
  • Hostinger TLS: DOMAIN=<real>.example.com docker compose --profile tls up -d with DNS pointed at the VM — verify Caddy provisions a Let's Encrypt cert and serves https://<domain>/.
  • DigitalOcean: packer build deploy/digitalocean/marketplace-image.json against a DO token — verify snapshot is created and a droplet launched from it reaches the setup wizard and shows the MOTD on SSH.
  • DigitalOcean: reboot the droplet, verify /opt/albyhub/data volume persists and the systemd unit brings Hub back up.
  • End-to-end on each: complete onboarding, open a lightning channel, receive and send a test payment.

…igitalOcean

Adds a deploy/ tree with one-click-deploy scaffolds for three tier-1
VPS marketplaces, alongside the existing fly.toml and render.yaml:

- deploy/railway/: doc specifying dashboard config + button markdown
  (Railway templates are dashboard-configured, shared as
  railway.com/template/<id> URLs — no repo config file).
- deploy/hostinger/: docker-compose.yml + Caddyfile + submission doc
  for the Hostinger VPS Application Catalog. Deployable as-is on any
  Hostinger VPS with the Ubuntu 24.04 + Docker template.
- deploy/digitalocean/: Packer template + cloud-init + systemd unit +
  caddy config + provisioner/validator scripts following the
  digitalocean/marketplace-partners layout, for submission as a
  DigitalOcean Marketplace 1-Click App.

Each directory includes a README covering submission process,
user-facing env vars, affiliate attribution, caveats, and support
surface. All three reuse ghcr.io/getalby/hub:latest — no Dockerfile
or build-docker.yaml changes needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 84aa9a5b-d43a-4ebb-b3a5-dd2b3caddafd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/marketplaces

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@rolznz

rolznz commented Apr 21, 2026

Copy link
Copy Markdown
Member

We had an issue in the past that DO did not come with a persistent volume. We need to double check them all before recommending them

@im-adithya im-adithya modified the milestone: v1.22.0 Apr 24, 2026
@MoritzKa

Copy link
Copy Markdown
Member

I am adding this issue from another repo that lists home operating systems where we also publish(ed) Alby Hub: https://github.com/getAlby/meta/issues/766

It would be useful to automate the submission to these systems too.

@reneaaron

Copy link
Copy Markdown
Member Author

Also consider to add LNVPS.net

if [ -n "$DOMAIN" ]; then
echo " Open Alby Hub: https://$DOMAIN"
else
echo " Open Alby Hub: http://$PUBLIC_IP:8080"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't this also on port 80? as both are served by caddy?

"api_token": "{{user `token`}}",
"image": "ubuntu-24-04-x64",
"region": "fra1",
"size": "s-1vcpu-2gb",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this get a volume?
last time we had the issue that volumes are not persistent by default.

@@ -0,0 +1,46 @@
services:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can't we use our default docker-compose?

@@ -0,0 +1,25 @@
[Unit]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we reuse this systemd also?

so that we have only one systemd service file for all?

why is docker here used actually?

@reneaaron reneaaron modified the milestones: v1.22.0, v1.23.0 Apr 30, 2026
@rolznz rolznz removed this from the v1.23.0 milestone Jun 4, 2026
@rolznz
rolznz requested a review from im-adithya June 4, 2026 07:44
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.

5 participants