Railway

Deploy Pingvin Share X v1.22 | WeTransfer Alternative, Not Claimable

WeTransfer alternative. Admin seeded at boot, so no stranger can claim it

Deploy Pingvin Share X v1.22 | WeTransfer Alternative, Not Claimable

Just deployed

/opt/app/backend/data

Deploy and Host Pingvin Share X on Railway

Pingvin Share X is a self-hosted file-sharing service — a WeTransfer alternative you own. Upload files, hand out a link, and set how long it lives: expiry date, download limit, visitor limit, a password, or an email recipient. Reverse shares let someone upload to you without an account, and OIDC, OAuth and LDAP logins are built in.

This template deploys the maintained fork, smp46/pingvin-share-x v1.22.0. The original project was archived on 2025-06-29 and its own README points here; the archived image's latest tag has not moved since May 2025.

About Hosting Pingvin Share X

One service, one volume, no database or cache to run alongside it: the SQLite database, the uploaded files and the branding assets all live on a single disk, and first boot takes seconds because migrations are the only startup work.

Three things about this app need handling before it works on Railway, and this template does all three inside the image rather than asking you to configure them:

  • The listener. The bundled Caddy is hardcoded to port 3000 and the frontend to 3333, and $PORT is not a listen port anywhere in the app — it selects the upstream Caddy proxies pages to. Because Railway injects PORT into every service, an untuned deploy serves {"message":"Cannot GET /","statusCode":404} for every page while its health check stays green. Here the injected port is captured and the proxy is generated around it.
  • The administrator. Pingvin gives administrator rights to whoever signs up first, and open registration is the default, so an untuned deploy belongs to the first stranger who opens the URL. This template generates the admin password per deploy and seeds the account before the public port is ever bound, then closes registration.
  • Persistence that includes your branding. Logos, favicon and PWA icons are written outside the data directory, so with one volume a custom logo silently reverts on every redeploy. That path is relocated onto the volume.

Emailed share links, password-reset links and OAuth redirects are built from the deployment's own Railway domain, and the login throttle is keyed on the real client address rather than on Railway's edge — without that, twenty wrong passwords lock every user out of the instance.

Common Use Cases

  • Sending large files to clients with an expiring, password-protected link instead of an email attachment or a consumer file-sharing account.
  • A small team's private WeTransfer replacement, where the files stay on infrastructure the team controls and shares expire on a schedule.
  • Collecting files from other people with a reverse share — a single upload link the recipient needs no account to use.

Dependencies for Pingvin Share X Hosting

  • One container and one persistent volume. No external database, cache, queue or object store.
  • Optional: an SMTP server for share-by-email and password resets, and an OIDC/OAuth or LDAP provider if you want single sign-on. Both are configured in the admin UI after deploy.

Deployment Dependencies

Implementation Details

  • Volume mounted at /opt/app/backend/data, holding the SQLite database, the uploads and the relocated img directory.
  • Health check on /api/health.
  • One template variable, PINGVIN_ADMIN_PASSWORD, generated per deploy. Everything else is baked into the image, so the deploy form asks you for nothing.

Why Deploy Pingvin Share X on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Pingvin Share X on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

After Deploying

  1. Open the service's Variables tab and copy PINGVIN_ADMIN_PASSWORD.
  2. Sign in at the public URL as admin@pingvin.local with that password.
  3. Change the password and email from the account settings page.

Registration stays closed unless you open it in Admin → Configuration → Share; unauthenticated uploads are a separate setting and are off by default.


Template Content

More templates in this category

View Template
Garage S3 Storage
Ultra-light S3 server: fast, open-source, plug-and-play.

PROJETOS
7
View Template
Redis
Self Host Latest Redis with Railway

Arloodots
2
View Template
Postgres Backup to Cloudflare R2 (S3-Compatible)
Automated PostgreSQL backups to S3-compatible storage with encryption

Artour
7