3925cfa7bb
* fix: create default media folder structure on install * feat: add link to open exposed app to domain * [ImgBot] Optimize images *Total -- 2,048.42kb -> 1,263.43kb (38.32%) /screenshots/darkmode.png -- 998.43kb -> 609.77kb (38.93%) /screenshots/appstore.png -- 1,006.73kb -> 620.12kb (38.4%) /packages/dashboard/public/error.png -- 42.38kb -> 32.70kb (22.84%) /packages/dashboard/public/empty.svg -- 0.87kb -> 0.85kb (2.35%) Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com> * chore: bump version 0.8.1 * refactor: move all dashboard's files into a client folder * feat: setup trpc and create system router * test: split jest config for client and server * refactor: replace grapqhl queries with trpc in the frontend * refactor: remove now un-used system queries/mutations/resolvers from both client and server * chore: bump dependencies * feat: setup prisma and configure it for tests and development * feat: create trpc router for auth service * refactor: migrate client auth queries to trpc procedures * refactor: cleanup now un-used graphql resolvers and services * feat: create sql migrations by replicating typeorm ones in an idempotent manner * feat: create server-preload script to run migrations upon server start * chore: remove legacy migrations steps * feat: add redis_host as an env variable * refactor: remove prisma from context and use client directly in service * feat: create trpc router & service for apps * refactor: migrate client app queries/mutations to trpc * refactor: removal and replace usage of old graphql generated types * refactor: move from node --require to custom next server * test: fix tests and bump various dependencies * chore: cleanup system-api from now un-used files * refactor(dashboard): remove code related to apollo * refactor: serve static files through next's server instead of system-api * refactor(server): move auth and system services to class * refactor(client): remove layoutv2 abstraction * fix: return correct update info * chore: remove legacy system-api folder * refactor: remove system-api from docker files * feat: create scheduler to run cron jobs and setup periodic repo update * fix: failing build caused by remark-mdx * refactor: move migrations to server folder * feat: compile server using esbuild * refactor: ts issue mis-used file from client in server * ci: make pipeline pass by cd into dashboard before each step (temp) * chore: drop armv7 support * refactor: move dashboard files in root folder * feat(db): create migration to add operator field on user * feat(user): create routes and services for password reset * feat(auth): add reset password page, container & form * refactor(dashboard): change layout and page of auth to be url based instead of state based * feat(script): add reset-password script * fix(dashboard): only check status if restart or update has been requested * test: increase coverage for get-server-auth-session * fix(start.sh): prompt for network interface only if there is not an internal ip set * feat(script): support user docker-compose.yml and app.env * chore: bump version * fix: add missing postgres variables to start script * fix: check for 32 bits before installing/starting * fix: create default media folder structure on install * Updated demo instance link Changed demo.runtipi.com to https://demo.runtipi.com * feat: adding config for codespaces * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] --------- Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com> Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com> Co-authored-by: Freddie Sackur <github@dustyfox.uk> Co-authored-by: Kieran Klukas <92754843+kcoderhtml@users.noreply.github.com> Co-authored-by: alwerner <alexander.werner@bonprix.net> Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> |
||
---|---|---|
.devcontainer | ||
.github | ||
__mocks__ | ||
prisma | ||
public | ||
screenshots | ||
scripts | ||
src | ||
templates | ||
tests | ||
traefik | ||
.all-contributorsrc | ||
.dockerignore | ||
.env.example | ||
.env.test | ||
.eslintignore | ||
.eslintrc.js | ||
.gitignore | ||
.prettierrc.js | ||
CODE_OF_CONDUCT.md | ||
docker-compose.dev.yml | ||
docker-compose.rc.yml | ||
docker-compose.test.yml | ||
docker-compose.yml | ||
Dockerfile | ||
Dockerfile.dev | ||
esbuild.js | ||
jest.config.ts | ||
LICENSE | ||
next-env.d.ts | ||
next.config.mjs | ||
package.json | ||
pnpm-lock.yaml | ||
README.md | ||
sonar-project.properties | ||
tsconfig.json |
Tipi — A personal homeserver for everyone
Join the discussion
⚠️ 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 that makes it easy to manage and run multiple services on a single server. It is based on Docker and comes with a simple web interface to manage your services. Tipi is designed to be easy to use, so you don't have to worry about manual configuration or networking. Simply install Tipi on your server and use the web interface to add and manage services. You can see a list of available services in the App Store repo and request new ones if you don't see what you need. To get started, follow the installation instructions below.
Demo
You can try out a demo of Tipi at demo.runtipi.com using the following credentials:
username: user@runtipi.com
password: runtipi
🛠 Installation
Installation Requirements
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.
Download and install Tipi
Download the latest version of Tipi:
curl -L https://setup.runtipi.com | bash
The script will prompt you the ip address of the dashboard once configured.
Commands
If you already installed Tipi, you can start it manually by running the start.sh
script in the runtipi
folder.
cd runtipi
sudo ./scripts/start.sh
Tipi will run by default on port 80. To select another port you can run the start script with the --port
argument
sudo ./scripts/start.sh --port 7000
To stop Tipi, run the stop script.
sudo ./scripts/stop.sh
Update Tipi
To update Tipi to the latest version, run the update script.
sudo ./scripts/system.sh update
Custom settings
You can change the default settings by creating a settings.json
file. The file should be located in the runtipi/state
directory. This file will make your changes persist across restarts. Example file:
{
"dnsIp": "9.9.9.9",
"domain": "mydomain.com"
}
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
If you want to link a domain to your dashboard, you can do so by providing the --domain
option in the start script.
sudo ./scripts/start.sh --domain mydomain.com
You can also specify it in the settings.json
file as shown in the previous section to keep the setting saved across restarts.
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.
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.
sudo ./scripts/stop.sh
cd ..
sudo rm -rf runtipi
📚 Documentation
For a detailed guide on how to install Tipi. This amazing article by @kycfree Running a Home Server with Tipi
You can find more documentation and tutorials / FAQ in the Wiki.
❤️ Contributing
Tipi is made to be very easy to plug in new apps. We welcome and appreciate new contributions.
If you want to add a new app or feature, you can follow the Contribution guide for instructions on how to do so.
We are looking for contributions of all kinds. If you know design, development, or have ideas for new features, please get in touch.
📜 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.
The bash script app.sh
located in the scripts
folder contains some snippets from 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.
🗣 Community
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!