---
title: "Deploy ConvertX"
description: "Self-hosted online file converter. Supports 1000+ formats"
category: "Other"
url: https://railway.com/deploy/convertx-updated
---

# Deploy ConvertX

Self-hosted online file converter. Supports 1000+ formats

**[Deploy ConvertX on Railway](https://railway.com/template/convertx-updated)**

- **Category:** Other

## Template content

### convertx

- **Image:** c4illin/convertx:latest
- **Public domain:** Yes

## Documentation

# Deploy and Host ConvertX on Railway

ConvertX is a self-hosted online file conversion service that lets users convert files between supported formats through a web interface. It runs as a Docker-based application and provides configurable authentication, registration, sharing, automatic file cleanup, and conversion settings. ConvertX is designed for users who want to run their own private or shared file-conversion service.

## About Hosting ConvertX

Hosting ConvertX on Railway requires a single Docker service and a persistent Railway Volume. Deploy the `c4illin/convertx:latest` image and expose port `3000` through Railway's public networking. ConvertX stores its application files in `/app/data`, so a Railway Volume must be mounted at that path to preserve data across deployments and container restarts.

No PostgreSQL, Redis, MongoDB, Dockerfile, or Nixpacks configuration is required for this deployment. Railway provides the public domain and HTTPS, while ConvertX handles file conversion inside the application container. Configure `JWT_SECRET` as a secure application secret and set `LANGUAGE=en` for the default interface language. Optional variables can enable account registration, unauthenticated access, automatic cleanup, history visibility, and other application behavior.

## Common Use Cases

* **Private File Conversion:** Run a self-hosted conversion service for personal or internal use.
* **Team File Conversion:** Allow users to upload and convert files through a shared web application with account-based access.
* **Public Conversion Service:** Configure optional unauthenticated access when you want visitors to use ConvertX without creating accounts.

## Dependencies for ConvertX Hosting

* **ConvertX Docker Image:** `c4illin/convertx:latest`
* **Railway Volume:** Required and mounted at `/app/data` for persistent application data and files.
* **JWT Secret:** Required for application authentication and session security.
* **Railway Public Networking:** Required to expose ConvertX on port `3000`.

### Deployment Dependencies

* [ConvertX GitHub Repository](https://github.com/C4illin/ConvertX?utm_source=chatgpt.com)
* [ConvertX Docker Image](https://hub.docker.com/r/c4illin/convertx?utm_source=chatgpt.com)

### Implementation Details

## Docker

Create a Railway service using:

```docker
c4illin/convertx:latest
```

No Dockerfile, Nixpacks configuration, or custom build process is required.

## Public Networking

Configure the ConvertX service to expose:

| Setting          | Value           |
| ---------------- | --------------- |
| Proxy Type       | HTTP Proxy      |
| Target Port      | `3000`          |
| Application Port | `3000`          |
| HTTPS            | Railway-managed |

In Railway, open **ConvertX → Settings → Networking → Generate Domain**.

The application will then be available through the generated Railway HTTPS domain.

## Environment Variables

Configure the required variables:

| Variable     | Required | Description                                                              |
| ------------ | -------- | ------------------------------------------------------------------------ |
| `JWT_SECRET` | Yes      | Long random secret used by ConvertX for authentication/session security. |
| `LANGUAGE`   | Yes      | Default application language. Set to `en`.                               |

Raw Editor example:

```env
JWT_SECRET=
LANGUAGE=en
```

Generate a strong random value for `JWT_SECRET` and store it as a Railway secret. Do not commit the value to source control.

### Optional Variables

Account registration can be enabled with:

```env
ACCOUNT_REGISTRATION=true
```

For a service that allows use without user accounts:

```env
ALLOW_UNAUTHENTICATED=true
```

For a private or account-based deployment, leave `ALLOW_UNAUTHENTICATED` unset.

Automatic file cleanup can be configured with:

```env
AUTO_DELETE_EVERY_N_HOURS=24
```

Additional documented configuration can include:

```env
HIDE_HISTORY=true
FFMPEG_ARGS=-preset veryfast
WEBROOT=/convert
UNAUTHENTICATED_USER_SHARING=true
```

Only enable optional settings that match the intended ConvertX deployment.

## Persistent Storage

A Railway Volume is required.

Open:

**ConvertX → Settings → Volumes → Add Volume**

Set the mount path to:

```text
/app/data
```

ConvertX uses this directory for its persistent application data and files. The volume ensures data is retained when the container is restarted, redeployed, or replaced.

Do not mount the volume at a different path unless ConvertX documentation specifies an alternative data directory.

## Database

No external database service is required for this deployment.

Do not add PostgreSQL, Redis, or MongoDB. The supplied deployment configuration uses ConvertX's application storage under:

```text
/app/data
```

and persists it using a Railway Volume.

## Build &amp; Start

No custom build or start command is required.

Railway should deploy:

```text
c4illin/convertx:latest
```

using the Docker image's default startup configuration.

Do not configure Docker Compose, Nixpacks, or a separate application server.

## Accessing the Application

After deployment:

1. Open the ConvertX service in Railway.
2. Go to **Settings → Networking**.
3. Generate a Railway Domain.
4. Wait for the deployment to complete.
5. Open the generated HTTPS URL.

The resulting address will use Railway's generated domain, for example:

```text
https://YOUR-CONVERTX-DOMAIN.up.railway.app
```

If account registration is disabled, users should use the authentication/access configuration provided by the deployment.

For a public conversion service, enable:

```env
ALLOW_UNAUTHENTICATED=true
```

For a private deployment, leave it disabled and use the application's authentication features.

### Recommended Production Configuration

A minimal production deployment is:

```text
Service: ConvertX
Image: c4illin/convertx:latest
Port: 3000
Volume: /app/data
```

Required variables:

```env
JWT_SECRET=
LANGUAGE=en
```

Optional configuration:

```env
ACCOUNT_REGISTRATION=true
ALLOW_UNAUTHENTICATED=true
AUTO_DELETE_EVERY_N_HOURS=24
HIDE_HISTORY=true
FFMPEG_ARGS=-preset veryfast
WEBROOT=/convert
UNAUTHENTICATED_USER_SHARING=true
```

For a private deployment, keep `ALLOW_UNAUTHENTICATED` disabled. For a shared service, enable account registration only if users should be able to create their own accounts.

## Why Deploy ConvertX 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 ConvertX 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.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/convertx-updated
