2022-11-04 07:49:40 +00:00
# Tipi — A personal homeserver for everyone
2022-06-14 06:47:43 +00:00
<!-- ALL - CONTRIBUTORS - BADGE:START - Do not remove or modify this section -->
2022-11-04 07:49:40 +00:00
2022-10-14 16:49:17 +00:00
[![All Contributors ](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square )](#contributors-)
2022-11-04 07:49:40 +00:00
2022-06-14 06:47:43 +00:00
<!-- ALL - CONTRIBUTORS - BADGE:END -->
2022-11-04 07:49:40 +00:00
2022-05-07 06:27:26 +00:00
[![License ](https://img.shields.io/github/license/meienberger/runtipi )](https://github.com/meienberger/runtipi/blob/master/LICENSE)
[![Version ](https://img.shields.io/github/v/release/meienberger/runtipi?color=%235351FB&label=version )](https://github.com/meienberger/runtipi/releases)
2022-05-16 09:33:42 +00:00
![Issues ](https://img.shields.io/github/issues/meienberger/runtipi )
2022-06-11 13:07:12 +00:00
[![Docker Pulls ](https://badgen.net/docker/pulls/meienberger/runtipi?icon=docker&label=pulls )](https://hub.docker.com/r/meienberger/runtipi/)
[![Docker Image Size ](https://badgen.net/docker/size/meienberger/runtipi?icon=docker&label=image%20size )](https://hub.docker.com/r/meienberger/runtipi/)
2022-05-16 09:33:42 +00:00
![Build ](https://github.com/meienberger/runtipi/workflows/Tipi%20CI/badge.svg )
2022-08-11 15:41:34 +00:00
[![codecov ](https://codecov.io/gh/meienberger/runtipi/branch/master/graph/badge.svg?token=FZGO7ZOPSF )](https://codecov.io/gh/meienberger/runtipi)
2022-11-04 07:49:40 +00:00
2022-06-02 08:09:08 +00:00
#### Join the discussion
2022-11-04 07:49:40 +00:00
2022-06-02 08:12:11 +00:00
[![Discord ](https://img.shields.io/discord/976934649643294750?label=discord&logo=discord )](https://discord.gg/Bu9qEPnHsc)
[![Matrix ](https://img.shields.io/matrix/runtipi:matrix.org?label=matrix&logo=matrix )](https://matrix.to/#/#runtipi:matrix.org)
2022-06-02 08:09:08 +00:00
2022-06-07 18:59:30 +00:00
![Preview ](https://raw.githubusercontent.com/meienberger/runtipi/develop/screenshots/appstore.png )
2022-11-04 07:49:40 +00:00
2022-05-07 06:27:26 +00:00
> ⚠️ Tipi is still at an early stage of development and issues are to be expected. Feel free to open an issue or pull request if you find a bug.
Tipi is a personal homeserver orchestrator. It is running docker containers under the hood and provides a simple web interface to manage them. Every service comes with an opinionated configuration in order to remove the need for manual configuration and network setup.
2022-09-06 11:52:19 +00:00
Check our demo instance : ** [demo.runtipi.com ](https://demo.runtipi.com )** / username: **user@runtipi.com** / password: **runtipi**
2022-06-13 20:01:04 +00:00
2022-05-07 06:27:26 +00:00
## Apps available
2022-11-04 07:49:40 +00:00
2022-05-23 22:06:06 +00:00
- [Adguard Home ](https://github.com/AdguardTeam/AdGuardHome ) - Adguard Home DNS adblocker
2022-07-30 04:37:46 +00:00
- [Booksonic ](https://github.com/popeen ) - A server for streaming your audiobooks
2022-10-13 23:01:34 +00:00
- [BookStack ](https://www.bookstackapp.com/ ) - BookStack is a self-hosted platform for organising and storing information.
2022-05-19 14:04:37 +00:00
- [Calibre-Web ](https://github.com/janeczku/calibre-web ) - Web Ebook Reader
2022-11-04 07:49:40 +00:00
- [Code-Server ](https://github.com/coder/code-server ) - Web VS Code
2022-05-07 06:27:26 +00:00
- [Filebrowser ](https://github.com/filebrowser/filebrowser ) - Web File Browser
2022-11-04 07:49:40 +00:00
- [Firefly III ](https://github.com/firefly-iii/firefly-iii ) - A personal finances manager
2022-10-13 23:01:34 +00:00
- [FreshRSS ](https://github.com/FreshRSS/FreshRSS ) - A free, self-hostable RSS aggregator
2022-08-16 17:46:31 +00:00
- [Ghost ](https://github.com/TryGhost/Ghost ) - Ghost - Turn your audience into a business
2022-10-13 23:01:34 +00:00
- [Gitea ](https://github.com/go-gitea/gitea ) - Gitea - A painless self-hosted Git service
- [Gotify ](https://github.com/gotify/server ) - Simple server for sending and receiving notification messages.
2022-10-13 13:11:32 +00:00
- [Haven ](https://github.com/havenweb/haven ) - Haven is a self-hosted private blog and feedreader you can use instead of Facebook
2022-05-23 22:06:06 +00:00
- [Homarr ](https://github.com/ajnart/homarr ) - A homepage for your server
2022-05-25 20:59:06 +00:00
- [Home Assistant ](https://github.com/home-assistant/core ) - Open source home automation that puts local control and privacy first
2022-10-13 23:01:34 +00:00
- [Immich ](https://www.immich.app/ ) - Photo and video backup solution directly from your mobile phone
2022-05-07 06:27:26 +00:00
- [Invidious ](https://github.com/iv-org/invidious ) - An alternative front-end to YouTube
- [Jackett ](https://github.com/Jackett/Jackett ) - API Support for your favorite torrent trackers
- [Jellyfin ](https://github.com/jellyfin/jellyfin ) - A media server for your home collection
- [Joplin ](https://github.com/laurent22/joplin ) - Privacy focused note-taking app
2022-05-23 22:06:06 +00:00
- [Libreddit ](https://github.com/spikecodes/libreddit ) - Private front-end for Reddit
2022-10-13 23:01:34 +00:00
- [LibrePhotos ](https://github.com/LibrePhotos/librephotos ) - A self-hosted open source photo management service
- [LibreTranslate ](https://github.com/LibreTranslate/LibreTranslate ) - Free and open source machine translation API
- [Lidarr ](https://github.com/Lidarr/Lidarr ) - Looks and smells like Sonarr but made for music
- [Mealie ](https://github.com/hay-kot/mealie ) - Self-hosted recipe manager and meal planner
- [MoneroBlock ](https://github.com/duggavo/MoneroBlock ) - Decentralized and trustless Monero block explorer
- [Monero Daemon ](https://github.com/sethforprivacy/simple-monerod-docker ) - Monero is a private, decentralized cryptocurrency that keeps your finances confidential and secure
2022-05-07 06:27:26 +00:00
- [n8n ](https://github.com/n8n-io/n8n ) - Workflow Automation Tool
2022-10-13 23:01:34 +00:00
- [Navidrome ](https://github.com/navidrome/navidrome/ ) - Modern Music Server and Streamer compatible with Subsonic/Airsonic
2022-05-07 06:27:26 +00:00
- [Nextcloud ](https://github.com/nextcloud/server ) - A safe home for all your data
2022-05-23 22:06:06 +00:00
- [Nitter ](https://github.com/zedeus/nitter ) - Alternative Twitter front-end
2022-06-01 21:12:26 +00:00
- [Node-RED ](https://github.com/node-red/node-red ) - Low-code programming for event-driven applications
2022-07-26 18:24:18 +00:00
- [Overseerr ](https://github.com/sct/overseerr ) - Request management and media discovery tool for the Plex ecosystem
2022-06-01 21:12:26 +00:00
- [Photoprism ](https://github.com/photoprism/photoprism ) - AI-Powered Photos App for the Decentralized Web. We are on a mission to protect your freedom and privacy.
2022-05-07 06:27:26 +00:00
- [Pihole ](https://github.com/pi-hole/pi-hole ) - A black hole for Internet advertisements
2022-06-11 12:42:08 +00:00
- [Plex ](https://github.com/plexinc/pms-docker ) - Stream Movies & TV Shows
2022-10-13 23:01:34 +00:00
- [Portainer ](https://github.com/portainer/portainer ) - Making Docker and Kubernetes management easy
- [PrivateBin ](https://github.com/PrivateBin/PrivateBin ) - A minimalist, open source online pastebin where the server has zero knowledge of pasted data
2022-05-23 22:06:06 +00:00
- [Prowlarr ](https://github.com/Prowlarr/Prowlarr/ ) - A torrent/usenet indexer manager/proxy
2022-10-13 23:01:34 +00:00
- [ProxiTok ](https://github.com/pablouser1/ProxiTok ) - Open source alternative frontend for TikTok made using PHP
- [qBittorrent ](https://github.com/qbittorrent/qBittorrent ) - Fast, easy, and free BitTorrent client
2022-05-23 22:06:06 +00:00
- [Radarr ](https://github.com/Radarr/Radarr ) - Movie collection manager for Usenet and BitTorrent users
2022-07-26 18:28:05 +00:00
- [Readarr ](https://github.com/Readarr/Readarr ) - Book Manager and Automation (Sonarr for Ebooks)
2022-06-11 12:42:08 +00:00
- [Resilio Sync ](https://github.com/bt-sync ) - Fast, reliable, and simple file sync and share solution
2022-10-13 23:01:34 +00:00
- [SearXNG ](https://github.com/searxng/searxng ) - Privacy-respecting, hackable metasearch engine
- [Send ](https://gitlab.com/timvisee/send ) - Simple, private file sharing
2022-05-07 06:27:26 +00:00
- [Sonarr ](https://github.com/Sonarr/Sonarr ) - TV show manager for Usenet and BitTorrent
- [Syncthing ](https://github.com/syncthing/syncthing ) - Continuous File Synchronization
2022-05-23 22:06:06 +00:00
- [Tailscale ](https://github.com/tailscale/tailscale ) - The easiest, most secure way to use WireGuard and 2FA
- [Tautulli ](https://github.com/Tautulli/Tautulli ) - A Python based monitoring and tracking tool for Plex Media Server
2022-10-13 23:01:34 +00:00
- [teddit ](https://codeberg.org/teddit/teddit ) - Alternative Reddit front-end focused on privacy
2022-05-07 06:27:26 +00:00
- [Transmission ](https://github.com/transmission/transmission ) - Fast, easy, and free BitTorrent client
2022-10-13 23:01:34 +00:00
- [Tube Archivist ](https://github.com/tubearchivist/tubearchivist ) - Your self-hosted YouTube media server
- [Uptime Kuma ](https://github.com/louislam/uptime-kuma ) - A fancy self-hosted monitoring tool
2022-05-23 05:47:58 +00:00
- [Vaultwarden ](https://github.com/dani-garcia/vaultwarden ) - Unofficial Bitwarden compatible server
2022-10-13 23:01:34 +00:00
- [Wireguard Easy ](https://github.com/WeeJeWel/wg-easy ) - WireGuard VPN + Web-based Admin UI
- [Your Spotify ](https://github.com/Yooooomi/your_spotify ) - Self hosted Spotify tracking dashboard
- [Zerotier ](https://www.zerotier.com ) - Easy to use zero configuration VPN
2022-05-23 22:06:06 +00:00
2022-09-02 13:33:43 +00:00
You can find and submit new apps inside of the [RunTipi Appstore ](https://github.com/meienberger/runtipi-appstore ).
2022-05-07 06:27:26 +00:00
## 🛠 Installation
2022-05-22 09:28:43 +00:00
2022-05-07 06:27:26 +00:00
### Installation Requirements
2022-11-04 07:49:40 +00:00
2022-06-02 08:15:03 +00:00
Ubuntu 18.04 LTS or higher is recommended. However other major Linux distribution are supported but may lead to installation issues. Please file an issue if you encounter one.
2022-05-07 06:27:26 +00:00
### Step 1. Download Tipi
2022-11-04 07:49:40 +00:00
2022-05-07 06:27:26 +00:00
Run this in an empty directory where you want to install Tipi.
```bash
git clone https://github.com/meienberger/runtipi.git
```
### Step 2. Run Tipi
2022-11-04 07:49:40 +00:00
2022-05-07 06:27:26 +00:00
cd into the downloaded directory and run the start script.
```bash
2022-05-23 22:07:38 +00:00
cd runtipi
sudo ./scripts/start.sh
2022-05-07 06:27:26 +00:00
```
The script will prompt you the ip address of the dashboard once configured.
2022-05-18 19:09:51 +00:00
Tipi will run by default on port 80. To select another port you can run the start script with the `--port` argument
```bash
sudo ./scripts/start.sh --port 7000
```
2022-05-07 06:27:26 +00:00
To stop Tipi, run the stop script.
```bash
sudo ./scripts/stop.sh
```
2022-10-06 16:30:23 +00:00
### Custom settings
2022-11-04 07:49:40 +00:00
You can change the default settings by creating a `settings.json` file. The file should be located in the `state` directory. This file will make your changes persist across restarts. Example file:
2022-10-06 16:30:23 +00:00
```json
{
2022-11-04 07:49:40 +00:00
"dnsIp": "9.9.9.9",
"domain": "mydomain.com"
2022-10-06 16:30:23 +00:00
}
```
2022-11-04 07:49:40 +00:00
Available settings:
- `dnsIp` - The IP address of the DNS server to use. Default: `9.9.9.9`
- `domain` - The domain name to use for the dashboard. Default: `localhost`
- `port` - The port to use for the dashboard. Default: `80`
- `sslPort` - The port to use for the dashboard with SSL. Default: `443`
- `listenIp` - The IP address to listen on. Default: `automatically detected`
- `storagePath` - The path to use for storing data. Default: `runtipi/app-data`
### Linking a domain to your dashboard
2022-09-04 12:31:57 +00:00
If you want to link a domain to your dashboard, you can do so by providing the `--domain` option in the start script.
```bash
sudo ./scripts/start.sh --domain mydomain.com
```
2022-11-04 07:49:40 +00:00
You can also specify it in the `settings.json` file as shown in the previous section to keep the setting saved across restarts.
2022-10-06 16:30:23 +00:00
2022-09-05 19:38:52 +00:00
A Let's Encrypt certificate will be generated and installed automatically. Make sure to have ports 80 and 443 open on your firewall and that your domain has an **A** record pointing to your server IP.
2022-09-04 12:31:57 +00:00
2022-11-04 07:49:40 +00:00
Please note that this setting will only expose the dashboard. If you want to expose other apps, you need to configure them individually. You cannot use the `--domain` option to expose apps.
This option will only work if you keep the default port 80 and 443 for the dashboard.
### Uninstalling Tipi
Make sure Tipi is completely stopped and then remove the `runtipi` directory.
```bash
sudo ./scripts/stop.sh
cd ..
sudo rm -rf runtipi
```
## 📚 Documentation
You can find more documentation and tutorials / FAQ in the [Wiki ](https://github.com/meienberger/runtipi/wiki ).
2022-05-07 06:27:26 +00:00
## ❤️ Contributing
Tipi is made to be very easy to plug in new apps. We welcome and appreciate new contributions.
2022-08-17 21:00:00 +00:00
If you want to add a new app or feature, you can follow the [Contribution guide ](https://github.com/meienberger/runtipi/wiki/Adding-your-own-app ) for instructions on how to do so.
2022-05-07 06:27:26 +00:00
2022-11-04 07:49:40 +00:00
We are looking for contributions of all kinds. If you know design, development, or have ideas for new features, please get in touch.
2022-05-07 06:27:26 +00:00
## 📜 License
2022-11-04 07:49:40 +00:00
2022-05-07 06:27:26 +00:00
[![License ](https://img.shields.io/github/license/meienberger/runtipi )](https://github.com/meienberger/runtipi/blob/master/LICENSE)
Tipi is licensed under the GNU General Public License v3.0. TL;DR — You may copy, distribute and modify the software as long as you track changes/dates in source files. Any modifications to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build & install instructions.
2022-05-16 17:10:12 +00:00
2022-11-04 07:49:40 +00:00
The bash script `app.sh` located in the `scripts` folder contains some snippets from [Umbrel ](https://github.com/getumbrel/umbrel )'s code. Therefore some parts of the code are licensed under the PolyForm Noncommercial License 1.0.0 license. You can for now consider the whole file under this license. We are actively working on re-writing those parts in order to make them available under the GPL license like the rest of our code.
2022-09-13 16:27:40 +00:00
2022-05-16 17:10:12 +00:00
## 🗣 Community
2022-11-04 07:49:40 +00:00
2022-05-16 17:10:12 +00:00
- [Matrix ](https://matrix.to/#/#runtipi:matrix.org )< br />
- [Twitter ](https://twitter.com/runtipi )
2022-05-17 22:57:43 +00:00
- [Telegram ](https://t.me/+72-y10MnLBw2ZGI0 )
2022-06-07 18:59:30 +00:00
- [Discord ](https://discord.gg/Bu9qEPnHsc )
2022-06-14 06:47:43 +00:00
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL - CONTRIBUTORS - LIST:START - Do not remove or modify this section -->
<!-- prettier - ignore - start -->
<!-- markdownlint - disable -->
< table >
2022-09-10 09:40:12 +00:00
< tbody >
< tr >
2022-10-13 22:03:51 +00:00
< td align = "center" > < a href = "https://meienberger.dev/" > < img src = "https://avatars.githubusercontent.com/u/47644445?v=4?s=100" width = "100px;" alt = "Nicolas Meienberger" / > < br / > < sub > < b > Nicolas Meienberger< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=meienberger" title = "Code" > 💻< / a > < a href = "#infra-meienberger" title = "Infrastructure (Hosting, Build-Tools, etc)" > 🚇< / a > < a href = "https://github.com/meienberger/runtipi/commits?author=meienberger" title = "Tests" > ⚠️< / a > < a href = "https://github.com/meienberger/runtipi/commits?author=meienberger" title = "Documentation" > 📖< / a > < / td >
< td align = "center" > < a href = "https://github.com/ArneNaessens" > < img src = "https://avatars.githubusercontent.com/u/16622722?v=4?s=100" width = "100px;" alt = "ArneNaessens" / > < br / > < sub > < b > ArneNaessens< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=ArneNaessens" title = "Code" > 💻< / a > < a href = "#ideas-ArneNaessens" title = "Ideas, Planning, & Feedback" > 🤔< / a > < a href = "https://github.com/meienberger/runtipi/commits?author=ArneNaessens" title = "Tests" > ⚠️< / a > < / td >
< td align = "center" > < a href = "https://github.com/DrMxrcy" > < img src = "https://avatars.githubusercontent.com/u/58747968?v=4?s=100" width = "100px;" alt = "DrMxrcy" / > < br / > < sub > < b > DrMxrcy< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=DrMxrcy" title = "Code" > 💻< / a > < a href = "#ideas-DrMxrcy" title = "Ideas, Planning, & Feedback" > 🤔< / a > < a href = "https://github.com/meienberger/runtipi/commits?author=DrMxrcy" title = "Tests" > ⚠️< / a > < / td >
< td align = "center" > < a href = "https://cobre.dev" > < img src = "https://avatars.githubusercontent.com/u/36574329?v=4?s=100" width = "100px;" alt = "Cooper" / > < br / > < sub > < b > Cooper< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=CobreDev" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://github.com/JTruj1ll0923" > < img src = "https://avatars.githubusercontent.com/u/6656643?v=4?s=100" width = "100px;" alt = "JTruj1ll0923" / > < br / > < sub > < b > JTruj1ll0923< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=JTruj1ll0923" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://github.com/Stetsed" > < img src = "https://avatars.githubusercontent.com/u/33891782?v=4?s=100" width = "100px;" alt = "Stetsed" / > < br / > < sub > < b > Stetsed< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=Stetsed" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://github.com/blushell" > < img src = "https://avatars.githubusercontent.com/u/3621606?v=4?s=100" width = "100px;" alt = "Jones_Town" / > < br / > < sub > < b > Jones_Town< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=blushell" title = "Code" > 💻< / a > < / td >
2022-09-10 09:40:12 +00:00
< / tr >
< tr >
2022-10-13 22:03:51 +00:00
< td align = "center" > < a href = "https://rushichaudhari.github.io/" > < img src = "https://avatars.githubusercontent.com/u/6279035?v=4?s=100" width = "100px;" alt = "Rushi Chaudhari" / > < br / > < sub > < b > Rushi Chaudhari< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=rushic24" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://github.com/rblaine95" > < img src = "https://avatars.githubusercontent.com/u/4052340?v=4?s=100" width = "100px;" alt = "Robert Blaine" / > < br / > < sub > < b > Robert Blaine< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=rblaine95" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://sethforprivacy.com" > < img src = "https://avatars.githubusercontent.com/u/40500387?v=4?s=100" width = "100px;" alt = "Seth For Privacy" / > < br / > < sub > < b > Seth For Privacy< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=sethforprivacy" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://github.com/hqwuzhaoyi" > < img src = "https://avatars.githubusercontent.com/u/44605072?v=4?s=100" width = "100px;" alt = "Prajna" / > < br / > < sub > < b > Prajna< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=hqwuzhaoyi" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://github.com/justincmoy" > < img src = "https://avatars.githubusercontent.com/u/14875982?v=4?s=100" width = "100px;" alt = "Justin Moy" / > < br / > < sub > < b > Justin Moy< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=justincmoy" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://github.com/dextreem" > < img src = "https://avatars.githubusercontent.com/u/11060652?v=4?s=100" width = "100px;" alt = "dextreem" / > < br / > < sub > < b > dextreem< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=dextreem" title = "Code" > 💻< / a > < / td >
< td align = "center" > < a href = "https://github.com/iBicha" > < img src = "https://avatars.githubusercontent.com/u/17722782?v=4?s=100" width = "100px;" alt = "Brahim Hadriche" / > < br / > < sub > < b > Brahim Hadriche< / b > < / sub > < / a > < br / > < a href = "https://github.com/meienberger/runtipi/commits?author=iBicha" title = "Code" > 💻< / a > < / td >
2022-09-10 09:40:12 +00:00
< / tr >
2022-10-14 16:49:17 +00:00
< tr >
< td align = "center" > < a href = "https://andrewbrereton.com" > < img src = "https://avatars.githubusercontent.com/u/682893?v=4?s=100" width = "100px;" alt = "Andrew Brereton" / > < br / > < sub > < b > Andrew Brereton< / b > < / sub > < / a > < br / > < a href = "#content-andrewbrereton" title = "Content" > 🖋< / a > < / td >
< / tr >
2022-09-10 09:40:12 +00:00
< / tbody >
2022-06-14 06:47:43 +00:00
< / table >
<!-- markdownlint - restore -->
<!-- prettier - ignore - end -->
<!-- ALL - CONTRIBUTORS - LIST:END -->
2022-08-17 21:00:00 +00:00
This project follows the [all-contributors ](https://github.com/all-contributors/all-contributors ) specification. Contributions of any kind welcome!