{"id":13564296,"url":"https://github.com/almarklein/mypaas","last_synced_at":"2025-04-04T07:08:07.278Z","repository":{"id":38304692,"uuid":"219710639","full_name":"almarklein/mypaas","owner":"almarklein","description":"Run your own PaaS using Docker, Traefik, and great analytics","archived":false,"fork":false,"pushed_at":"2024-04-23T16:07:42.000Z","size":809,"stargazers_count":381,"open_issues_count":2,"forks_count":18,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-28T06:11:06.561Z","etag":null,"topics":["analytics","docker","paas","traefik"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/almarklein.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-05T09:49:45.000Z","updated_at":"2025-02-09T18:17:39.000Z","dependencies_parsed_at":"2024-01-07T14:11:28.507Z","dependency_job_id":"126b7716-1c9d-44e9-9255-da0dd865b7b2","html_url":"https://github.com/almarklein/mypaas","commit_stats":{"total_commits":86,"total_committers":6,"mean_commits":"14.333333333333334","dds":0.4418604651162791,"last_synced_commit":"797785a04270d1ee4949080e3cd71276ee295429"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almarklein%2Fmypaas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almarklein%2Fmypaas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almarklein%2Fmypaas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almarklein%2Fmypaas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/almarklein","download_url":"https://codeload.github.com/almarklein/mypaas/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247135144,"owners_count":20889421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","docker","paas","traefik"],"created_at":"2024-08-01T13:01:29.374Z","updated_at":"2025-04-04T07:08:07.251Z","avatar_url":"https://github.com/almarklein.png","language":"Python","funding_links":[],"categories":["Python","Software","docker","analytics"],"sub_categories":["Miscellaneous"],"readme":"[![PyPI Version](https://img.shields.io/pypi/v/mypaas.svg)](https://pypi.python.org/pypi/mypaas/)\n[![CI](https://github.com/almarklein/mypaas/workflows/CI/badge.svg?branch=main)](https://github.com/almarklein/mypaas/actions)\n\n\u003cimg src=\"docs/screenshots/dashboard1.png\" height=192\u003e\u003c/img\u003e\n\u003cimg src=\"docs/screenshots/dashboard3.png\" height=192\u003e\u003c/img\u003e\n\n# MyPaas\nRun your own PaaS using Docker, Traefik, and great monitoring\n\nMyPaas is a tool that makes it easy to run a platform as a service (PaaS)\non your own VM or hardware. It combines Traefik and Docker, offers free\nautomatic https, secure (zero-downtime) deployments via dockerfiles, and analytics.\n\nYou can setup your PaaS and make your first deployment in about 5 minutes.\n\n## Docker plus Traefik is awesome\n\n[Docker](https://en.wikipedia.org/wiki/Docker_(software)) makes it\npossible to run multiple applications on a single server in a contained\nway.\n\n[Traefik](https://traefik.io/) is a modern router, reverse proxy, and\nload balancer that can be automatically configured using labels on\nDocker containers. It can also act as an https endpoint and\nautomatically refreshes SSL/TLS certificates with [Let's Encrypt](https://letsencrypt.org/).\n\n[MyPaas](https://github.com/almarklein/mypaas) is a tool that helps you\nsetup Traefik, and deploy Docker containers that have the right labels\nso that Traefik handles them in the right way. Plus it adds\npowerful analytics for all your apps. Website traffic is logged\nserver-side, without cookies, respecting the end user's privacy.\n\nI use MyPaas myself to serve e.g. https://pyzo.org and https://timetagger.app.\n\n\n## How it works\n\nMyPaas is a command line interface (CLI) to setup and manage your PaaS server.\nYou use the same CLI on your work machine to push deploys to the server.\nYou configure your service/app by writing a Dockerfile and adding special\nmypaas-comments to it, and push that to the server via the CLI, where it is built\nand deployed. There is a web dashboard, but only for viewing status and analytics.\n\n\n## Setting expectations\n\nUsing MyPaas requires you to be familiar with a few basic backend\ndevelopment skills. There are plenty of online guides on each topic.\n\n* You must be able to SSH into your server.\n* You must know how to edit a file over SSH.\n* You should probably know the basics of Docker.\n* It may be useful to know the basic commands of systemctl\n  (actually, `systemctl status mypaasd` may be all you need).\n\n\n## Guide\n\n* [Getting started](docs/gettingstarted.md)\n* [Deploying](docs/deploying.md)\n* [`mypaas.toml`](docs/configuration.md)\n* [Checking status and analytics](docs/status.md)\n* [The CLI](docs/cli.md)\n* [Notes on security](docs/security.md)\n\nAlso see the [example services](https://github.com/almarklein/mypaas/tree/main/example_services).\n\n\n## License\n\nBSD 2-clause.\n\n\n## What about serverless?\n\nServerless is nice and often very affordable, but you give up control\nand you often need additional services for analytics, databases, etc.\nMyPaas tries to make managing your server as easy as possible. You\nremain in control, and your only costs are that of the VM that the PaaS\nruns on.\n\n\n## Alternative projects to run your own PaaS\n\nThere are several tools similar to MyPaas. This is how (I think) they\ndiffer (let me know via an issue or PR if you can explain\nthe differences better, or know of another alternative project.)\n\n* [Dokku](http://dokku.viewdocs.io/dokku) uses Docker and Nginx. Apps\n  are configured at the server (rather than via the dockerfile as MyPaas does).\n  At the time that I tried it, getting Let's Encrypt to work was not trivial,\n  but this may have changed. Docku has no builtin analytics. Deploys\n  go via a `git push`, as opposed to a a push command of a CLI tool\n  (`mypaas push`).\n* [CapRover](https://caprover.com) uses Docker and Nginx, and has a\n  nice web UI. This is also its weak spot IMO, because a username\n  and password are all that's needed to give full access to your apps.\n  MyPaas uses RSA keys and tokens that time out to provide high security.\n* [Swarmpit](https://swarmpit.io/) uses Docker Swarm and comes with monitoring.\n  It's probably a bit more down to the metal. Not sure if it does Let's Encrypt?\n* [SwarmLet](https://swarmlet.dev/) uses Traefik and Docker compose /\n  Docker swarm. This project is probably closest to MyPaas. It uses raw\n  labels for Traefik added in the compose file to configure an app.\n  MyPaas uses more high-level configuration in the Dockerfile. Swarmlet\n  uses git push to make a deploy as opposed to `mypaas push`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falmarklein%2Fmypaas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falmarklein%2Fmypaas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falmarklein%2Fmypaas/lists"}