Skip to content

Latest commit

 

History

568 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Renewlet

Renewlet

简体中文 · English

Self-hosted Docker Cloudflare Workers Memory 20-30MiB MIT License

Renewlet is a self-hosted subscription ledger for recurring expenses. See what you spend, what is due next, and get a reminder before renewal.

Run it in a single Docker container or deploy it to Cloudflare Workers.

Demo

https://demo.renewlet.cc/

Sign in with demo@renewlet.local / renewlet-demo. Data resets regularly; do not enter real information or credentials.

Renewlet dashboard showing monthly spend, upcoming renewals, and spending distribution

Features

  • Keep prices, billing cycles, renewal dates, payment methods, and notes in one place.
  • Review monthly or yearly spending, track a budget, and convert between currencies.
  • Send reminders in your timezone through Telegram, Notifyx, Webhook, WeCom, DingTalk, email, Bark, ServerChan, Discord, or PushPlus.
  • Turn screenshots, notes, or tables into editable drafts, then review them before import. You can also import or export Renewlet data, or migrate from Wallos.
  • Add all or individual subscriptions to a calendar, or share a public status page with prices hidden when needed.
  • Secure the account with an authenticator, recovery codes, or passkeys, and optionally protect password login with Cloudflare Turnstile.
  • Connect CLI tools, Shortcuts, and other automation through the read-only Public API.

Docker Quick Start

Requirements: Docker and Docker Compose v2.

mkdir -p renewlet && cd renewlet
curl -fsSL https://raw.githubusercontent.com/zhiyingzzhou/renewlet/main/deploy/docker-deploy.sh | bash
docker compose up -d

After it starts, open:

http://localhost:3000/setup

Create the first administrator. The deploy script creates docker-compose.yml, .env, and data/, then writes PB_ENCRYPTION_KEY and CRON_SECRET.

For production, pin a stable image tag:

sed -i.bak 's#RENEWLET_IMAGE=.*#RENEWLET_IMAGE="zhiyingzzhou/renewlet:0.3.28"#' .env
docker compose pull
docker compose up -d

If Docker Hub is unavailable, use GHCR:

RENEWLET_IMAGE="ghcr.io/zhiyingzzhou/renewlet:0.3.28"

Cloudflare Workers

Deploy to Cloudflare

Click the button to deploy. To manage the Cloudflare resources yourself, follow the Cloudflare Workers deployment guide.

For upgrades, update the existing repository as described in the guide instead of clicking the deploy button again.

Upgrade

Back up your data and configuration first:

tar -czf renewlet-backup-$(date +%F).tgz .env docker-compose.yml data

Update the Docker image:

sed -i.bak 's#RENEWLET_IMAGE=.*#RENEWLET_IMAGE="zhiyingzzhou/renewlet:0.3.28"#' .env
docker compose pull
docker compose up -d
docker compose logs -f

You can also update in the app by clicking the version number at the top of Renewlet and opening System Update.

Common Commands

docker compose ps
docker compose logs -f
docker compose down

Common .env values:

Variable Purpose
PORT Public port, 3000 by default.
RENEWLET_IMAGE Docker image, zhiyingzzhou/renewlet:latest by default.
TZ Time zone for logs; reminders use each user's time zone.
PB_ENCRYPTION_KEY Encryption key for sensitive settings. Do not change it after deployment.
CRON_SECRET Bearer secret for external Cron requests.
RENEWLET_DEMO_MODE Enables demo mode. false by default.
RENEWLET_CUSTOM_HEAD_HTML Optional custom <head> content. Empty by default.
NOTIFICATION_SCHEDULER_ENABLED Enables the built-in notification scheduler. true by default.
HTTP_PROXY / HTTPS_PROXY / NO_PROXY Recommended proxy variables for outbound HTTP(S) requests from the Docker server.

The full Docker environment template is in .env.example.

Upstream Proxy

To proxy HTTP(S) requests made by the Docker server, set these values in .env:

HTTP_PROXY="http://host.docker.internal:7890"
HTTPS_PROXY="http://host.docker.internal:7890"
NO_PROXY="localhost,127.0.0.1,.local"

Use the uppercase names by default. The lowercase alternatives are http_proxy, https_proxy, and no_proxy. Do not set both forms; when both are present, Go uses the uppercase value.

If the proxy runs on the host, use an address the container can reach instead of localhost or 127.0.0.1. Recreate the container after a change:

docker compose up -d --force-recreate

Custom Head HTML

To add a third-party service such as Microsoft Clarity, copy the provider's <head> code into RENEWLET_CUSTOM_HEAD_HTML unchanged. Wrap multiline values in single quotes when using a Docker .env file.

Only add code you trust; it can access data on Renewlet pages. Restart the Docker container after a change, or rebuild and redeploy Cloudflare.

Screenshots

AI recognition
Renewlet AI recognition dialog showing the input state before turning text content into editable subscription drafts
Public subscription status page
Renewlet public subscription status page showing public subscription totals, prices, and subscription cards
Subscriptions
Renewlet subscriptions view with filters, tags, statuses, and service logos
Statistics
Renewlet statistics view with budget usage, category spending, and payment method charts
Renewal calendar
Renewlet renewal calendar showing monthly renewal events and estimated spend
Notifications
Renewlet notification settings showing channels and email configuration

Mobile

Mobile subscriptions
Renewlet mobile subscriptions view with filters, subscription cards, logos, prices, and tags
Mobile notification methods
Renewlet mobile notification methods view showing the email channel and SMTP email configuration

Contributing

Issues, documentation fixes, tests, and pull requests are welcome. For larger changes, open an issue first with the goal, use case, and rough approach.

License

Renewlet is open-sourced under the MIT License.

About

Self-hosted subscription tracker for recurring renewals, with timezone-aware reminders, ten notification channels, budgets, and spending insights.

Resources

Contributing

Security policy

Stars

269 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages