Self-hosted reset via Railway shell — takes 2 minutes.
1. Open the Railway shell
Open Railway dashboard → click your project → click the web service → click the "..." menu (top-right of the service panel) → select "Service Shell" or "Run Command".
2. Paste this command — replace YOUR_NEW_PASSWORD with a strong password (12+ chars)
python -c "
from app import create_app, db
from models import AdminUser
from werkzeug.security import generate_password_hash
app = create_app(); ctx = app.app_context(); ctx.push()
u = AdminUser.query.first()
u.password_hash = generate_password_hash('YOUR_NEW_PASSWORD')
db.session.commit()
print('Password updated for', u.email)
"
Press Enter. You should see Password updated for ...
3. Sign in
Go back to the sign-in page and use your new password.
Why no email reset? This is a single-admin tool. Setting up email-based reset would require provisioning SMTP, verifying domain DNS, and adding another moving part — for a one-user site, the Railway shell method is simpler and equally safe.