Issues following vanilla Remark deployment from template
Anonymous
HOBBYOP

2 months ago

Hi, I'm not a dev, but am fine with cli etc. I am using an AI agent to help me, and I'm not sure it fully understands Railway.
Problem Description

I have deployed Remark42 using the Railway template. The service shows as "Active" and the deployment logs indicate successful startup, but the service is not accessible via HTTP and the mounted volume is not accessible to the container.

Subject

Remark42 Service Returning 404 on All Endpoints; Volume Mount Not Accessible

Project Details

•Project Name: gracious-rebirth

•Service Name: remark42

•Service ID: 84b25024

•Deployment Region: europe-west4-drams3a

•Public URL: https://remark42-production-de86.up.railway.app

•Docker Image: ghcr.io/umputun/remark42:latest

Issue 1: HTTP 404 on All Endpoints

Observed Behavior:

•All HTTP requests to the service return "404 page not found"

•This includes the root path /, admin panel /admin, and API endpoints /api/

•The HTTP logs show consistent 404 responses

Expected Behavior:

•The Remark42 web interface should be accessible at /admin

•The API should respond at /api/ endpoints

•The root path should serve the Remark42 UI

Evidence:

•HTTP request to / returns 404 (140ms response time )

•HTTP request to /admin returns 404 (140ms response time)

•HTTP request to /favicon.ico returns 404 (140ms response time)

•Service status shows "Active" and deployment was "successful"

Issue 2: Volume Mount Not Accessible

Observed Behavior:

•The volume "remark42-volume" is configured to mount at /srv/var in the Remark42 service

•However, when attempting to write files to /srv/var/ from within the container, the operation fails with "No such file or directory"

•The directory /srv/ does not exist in the container filesystem

Expected Behavior:

•The volume should be mounted and accessible at /srv/var/

•Files written to /srv/var/ should persist on the volume

Evidence:

•Attempted to create file: curl -o /srv/var/remark42_import.jsonl https://...

•Error: "Failed to open the file /srv/var/remark42_import.jsonl: No such file or directory"

•Directory listing shows /srv/ does not exist in the container

Issue 3: Deployment Logs Show Successful Startup

Relevant Log Entries:

Plain Text

2025/12/12 18:04:38.139 [INFO] start server on port :8080 2025/12/12 18:04:38.139 [INFO] make data store, type=bolt 2025/12/12 18:04:38.150 [INFO] run file server from ./web from the disk 2025/12/12 18:04:38.147 [INFO] activate http rest server on :8080

The logs indicate:

•Remark42 is listening on port 8080

•BoltDB data store is initialized

•File server is running

•HTTP REST server is active

However, the service is not responding to HTTP requests on the public URL.

Service Configuration

Environment Variables

Plain Text

DEBUG: false REMARK_URL: https://remark42-production-de86.up.railway.app SECRET: [configured] SITE_ID: WriterSite AWS_ACCESS_KEY_ID: [configured] AWS_SECRET_ACCESS_KEY: [configured] AWS_DEFAULT_REGION: [configured] AWS_ENDPOINT_URL: [configured] AWS_S3_BUCKET_NAME: [configured]

Volume Configuration

•Volume Name: remark42-volume

•Mount Path: /srv/var

•Size: 5.00 GB

Networking

•Public Domain: remark42-production-de86.up.railway.app

•Metal Edge: Yes (as shown in deployment details )

Questions for Support

1.HTTP Routing Issue: Why are all HTTP requests returning 404 when the service logs show the HTTP server is active on port 8080? Is there a routing configuration issue with Railway's Metal Edge proxy?

2.Volume Mount Issue: Why is the volume not accessible at /srv/var/ inside the container, despite being configured to mount there? Is there a known issue with volume mounts on Railway Metal?

3.File Server Issue: The logs show "run file server from ./web from the disk", but the web files appear to be served correctly (based on the directory listing in the logs). Why might the HTTP server not be responding to requests?

4.Container Filesystem: Is there a way to verify the actual mount path of the volume inside the container? The UI shows /srv/var, but the container doesn't seem to have this path.

Steps Already Taken

1.white_check_mark emoji Deployed Remark42 from Railway template

2.white_check_mark emoji Configured all required environment variables

3.white_check_mark emoji Attached volume to service

4.white_check_mark emoji Verified deployment was successful

5.white_check_mark emoji Checked HTTP logs (all showing 404)

6.white_check_mark emoji Reviewed deployment logs (show successful startup)

7.white_check_mark emoji Attempted to access service via public URL (404)

8.white_check_mark emoji Attempted to access service via admin panel (404)

Attachments

•Deployment logs (full output available)

•HTTP logs (showing 404 responses)

•Service configuration screenshots

•Volume mount configuration screenshot

Desired Outcome

I would like to:

1.Get the Remark42 service responding to HTTP requests

2.Verify the volume is properly mounted and accessible

3.Be able to import 413 comment records into the Remark42 database

Solved$10 Bounty

Pinned Solution

jqcktalks
FREE

2 months ago

Going to https://remark42-production-de86.up.railway.app/api/v1/ping, https://remark42-production-de86.up.railway.app/api/v1/find and https://remark42-production-de86.up.railway.app/web/ seem to resolve correctly and seem to be responding to HTTP requests.

If your image does not contain /srv/ then Railway won't be able to mount to it. A good choice is to mount the volume onto a directory that already exists (e.g. /data or /var/lib/remark42).

You'd then need to change the mount path inside Railway and also the STORE_BOLT_PATH variable.

If you have to use /srv/var, then you can run the command mkdir -p /srv/var && /remark42 - this works, but if you want a cleaner option then the first one I provided should work best.

8 Replies

Anonymous
HOBBYOP

2 months ago

I've tried deploying without Metal, tried restarting, tried with Metal again - all result in 404 response to http requests.


jqcktalks
FREE

2 months ago

Going to https://remark42-production-de86.up.railway.app/api/v1/ping, https://remark42-production-de86.up.railway.app/api/v1/find and https://remark42-production-de86.up.railway.app/web/ seem to resolve correctly and seem to be responding to HTTP requests.

If your image does not contain /srv/ then Railway won't be able to mount to it. A good choice is to mount the volume onto a directory that already exists (e.g. /data or /var/lib/remark42).

You'd then need to change the mount path inside Railway and also the STORE_BOLT_PATH variable.

If you have to use /srv/var, then you can run the command mkdir -p /srv/var && /remark42 - this works, but if you want a cleaner option then the first one I provided should work best.


Anonymous
HOBBYOP

2 months ago

I'll see where this gets me - promise I'll come back and accept the solution if it helps even a bit!


jqcktalks
FREE

2 months ago

Thank you, best of luck!


anarchistmanifesto
TRIAL

2 months ago

looking at this thread it seems like @jqcktalks got you sorted with the volume mount issue. the 404s were probably happening because remark42 couldnt write to the bolt db since the mount path didnt exist in the container

just wanted to add a bit more context in case it helps - when railway mounts a volume it needs the directory to already exist in the docker image. if the path isnt there the mount just fails silently and your app cant access it. this is pretty common with images that dont have certain paths baked in

the fix @jqcktalks mentioned is solid - either:

option 1 (cleaner): mount to a path that exists like /data or /tmp and update your STORE_BOLT_PATH env var to match

option 2: add mkdir -p /srv/var && /remark42 to your start command which creates the directory before remark42 starts

since you said youre working with an ai agent you might want to double check what paths exist in the ghcr.io/umputun/remark42:latest image. you can do this by looking at the dockerfile or running the image locally with docker run -it ghcr.io/umputun/remark42:latest ls -la / to see the root directory structure

also fyi the /api/v1/ping and /api/v1/find endpoints working means your http routing is fine - the app was just broken because it couldnt initialize the database without proper storage access

hope that helps clarify things a bit. let us know if you run into any other issues after fixing the volume mount


jqcktalks
FREE

2 months ago

Hey - did this help you at all?


Anonymous
HOBBYOP

2 months ago

Getting round to trying it! side hustle!


jqcktalks

Hey - did this help you at all?

Anonymous
HOBBYOP

2 months ago

Accepted - it says it's doing some checking. Thank you!


Status changed to Solved noahd about 2 months ago


Loading...