Compare commits
23 commits
v2.2.0-bet
...
develop
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c962f030e3 | ||
![]() |
1f5701120f | ||
![]() |
249103f0a6 | ||
![]() |
bb1f343ac9 | ||
![]() |
6b371de137 | ||
![]() |
7133a2a2dc | ||
![]() |
44d40b4a34 | ||
![]() |
03e2604ca0 | ||
![]() |
ba3d860176 | ||
![]() |
250e78450f | ||
![]() |
d11299eeb8 | ||
![]() |
6cd7ca1a4e | ||
![]() |
bb9f26b2b1 | ||
![]() |
30890bedd5 | ||
![]() |
3876e8ee55 | ||
![]() |
92d5a7b6a3 | ||
![]() |
ca3dc64fd4 | ||
![]() |
59dbe672c8 | ||
![]() |
42349c5a27 | ||
![]() |
8104a9f3f7 | ||
![]() |
83e96cfd31 | ||
![]() |
852128f551 | ||
![]() |
df59d21ce7 |
22 changed files with 337 additions and 2287 deletions
|
@ -391,6 +391,15 @@
|
|||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "qcoudeyr",
|
||||
"name": "qcoudeyr",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/124463277?v=4",
|
||||
"profile": "https://github.com/qcoudeyr",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
|
|
2
.github/workflows/alpha-release.yml
vendored
2
.github/workflows/alpha-release.yml
vendored
|
@ -97,7 +97,7 @@ jobs:
|
|||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20
|
||||
|
||||
- uses: pnpm/action-setup@v2.4.0
|
||||
name: Install pnpm
|
||||
|
|
2
.github/workflows/beta-release.yml
vendored
2
.github/workflows/beta-release.yml
vendored
|
@ -97,7 +97,7 @@ jobs:
|
|||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20
|
||||
|
||||
- uses: pnpm/action-setup@v2.4.0
|
||||
name: Install pnpm
|
||||
|
|
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
@ -43,7 +43,7 @@ jobs:
|
|||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20
|
||||
|
||||
- uses: pnpm/action-setup@v2.4.0
|
||||
name: Install pnpm
|
||||
|
@ -106,7 +106,7 @@ jobs:
|
|||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20
|
||||
|
||||
- uses: pnpm/action-setup@v2.4.0
|
||||
name: Install pnpm
|
||||
|
|
2
.github/workflows/e2e.yml
vendored
2
.github/workflows/e2e.yml
vendored
|
@ -134,7 +134,7 @@ jobs:
|
|||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20
|
||||
|
||||
- name: Create .env.e2e file with Droplet IP
|
||||
run: |
|
||||
|
|
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
|
@ -95,7 +95,7 @@ jobs:
|
|||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
node-version: 20
|
||||
|
||||
- uses: pnpm/action-setup@v2.4.0
|
||||
name: Install pnpm
|
||||
|
@ -134,7 +134,7 @@ jobs:
|
|||
|
||||
publish-release:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [create-tag]
|
||||
needs: [create-tag, build-images, build-worker, build-cli]
|
||||
outputs:
|
||||
id: ${{ steps.create_release.outputs.id }}
|
||||
steps:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
ARG NODE_VERSION="18.16"
|
||||
ARG NODE_VERSION="20.10"
|
||||
ARG ALPINE_VERSION="3.18"
|
||||
|
||||
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS node_base
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
ARG NODE_VERSION="18.16"
|
||||
ARG NODE_VERSION="20.10"
|
||||
ARG ALPINE_VERSION="3.18"
|
||||
|
||||
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Tipi — A personal homeserver for everyone
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||
[](#contributors-)
|
||||
[](#contributors-)
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
|
||||
[](https://github.com/runtipi/runtipi/blob/master/LICENSE)
|
||||
|
@ -124,6 +124,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|||
<td align="center" valign="top" width="14.28%"><a href="http://cchalop1.com"><img src="https://avatars.githubusercontent.com/u/28163855?v=4?s=100" width="100px;" alt="CHALOPIN Clément"/><br /><sub><b>CHALOPIN Clément</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=cchalop1" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/geetansh"><img src="https://avatars.githubusercontent.com/u/9976198?v=4?s=100" width="100px;" alt="Geetansh Jindal"/><br /><sub><b>Geetansh Jindal</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=geetansh" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/0livier"><img src="https://avatars.githubusercontent.com/u/10607?v=4?s=100" width="100px;" alt="Olivier Garcia"/><br /><sub><b>Olivier Garcia</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=0livier" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qcoudeyr"><img src="https://avatars.githubusercontent.com/u/124463277?v=4?s=100" width="100px;" alt="qcoudeyr"/><br /><sub><b>qcoudeyr</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=qcoudeyr" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -60,7 +60,6 @@ services:
|
|||
context: .
|
||||
dockerfile: ./packages/worker/Dockerfile.dev
|
||||
container_name: tipi-worker
|
||||
user: root
|
||||
healthcheck:
|
||||
test: ['CMD', 'curl', '-f', 'http://localhost:3000/healthcheck']
|
||||
interval: 5s
|
||||
|
@ -80,7 +79,6 @@ services:
|
|||
# Dev mode
|
||||
- ${PWD}/packages/worker/src:/app/packages/worker/src
|
||||
# Production mode
|
||||
- /:/host/root:ro
|
||||
- /proc:/host/proc:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ${PWD}/.env:/app/.env
|
||||
|
|
|
@ -76,7 +76,6 @@ services:
|
|||
environment:
|
||||
NODE_ENV: production
|
||||
volumes:
|
||||
- /:/host/root:ro
|
||||
- /proc:/host/proc
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ${PWD}/.env:/app/.env
|
||||
|
|
15
package.json
15
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "runtipi",
|
||||
"version": "2.2.0",
|
||||
"version": "2.2.1",
|
||||
"description": "A homeserver for everyone",
|
||||
"scripts": {
|
||||
"knip": "knip",
|
||||
|
@ -45,13 +45,14 @@
|
|||
"@runtipi/postgres-migrations": "^5.3.0",
|
||||
"@runtipi/shared": "workspace:^",
|
||||
"@tabler/core": "1.0.0-beta20",
|
||||
"@tabler/icons-react": "^2.40.0",
|
||||
"@tabler/icons-react": "^2.42.0",
|
||||
"argon2": "^0.31.2",
|
||||
"bullmq": "^4.13.0",
|
||||
"clsx": "^2.0.0",
|
||||
"connect-redis": "^7.1.0",
|
||||
"drizzle-orm": "^0.28.6",
|
||||
"fs-extra": "^11.1.1",
|
||||
"geist": "^1.2.0",
|
||||
"let-it-go": "^1.0.0",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"next": "14.0.1",
|
||||
|
@ -66,7 +67,7 @@
|
|||
"react-hot-toast": "^2.4.1",
|
||||
"react-markdown": "^9.0.0",
|
||||
"react-select": "^5.8.0",
|
||||
"react-tooltip": "^5.22.0",
|
||||
"react-tooltip": "^5.25.0",
|
||||
"redaxios": "^0.5.1",
|
||||
"redis": "^4.6.10",
|
||||
"rehype-raw": "^7.0.0",
|
||||
|
@ -94,16 +95,16 @@
|
|||
"@total-typescript/shoehorn": "^0.1.1",
|
||||
"@total-typescript/ts-reset": "^0.5.1",
|
||||
"@types/fs-extra": "^11.0.4",
|
||||
"@types/jest": "^29.5.7",
|
||||
"@types/jest": "^29.5.11",
|
||||
"@types/lodash.merge": "^4.6.8",
|
||||
"@types/node": "20.8.10",
|
||||
"@types/pg": "^8.10.7",
|
||||
"@types/react": "18.2.34",
|
||||
"@types/react": "18.2.39",
|
||||
"@types/react-dom": "18.2.14",
|
||||
"@types/semver": "^7.5.4",
|
||||
"@types/uuid": "^9.0.6",
|
||||
"@types/validator": "^13.11.5",
|
||||
"@typescript-eslint/eslint-plugin": "^6.9.1",
|
||||
"@typescript-eslint/eslint-plugin": "^6.13.1",
|
||||
"@typescript-eslint/parser": "^6.10.0",
|
||||
"@vitejs/plugin-react": "^4.1.1",
|
||||
"@vitest/coverage-v8": "^0.34.6",
|
||||
|
@ -111,7 +112,7 @@
|
|||
"eslint": "8.52.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-airbnb-typescript": "^17.1.0",
|
||||
"eslint-config-next": "14.0.1",
|
||||
"eslint-config-next": "14.0.3",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-import-resolver-typescript": "^3.6.1",
|
||||
"eslint-plugin-import": "^2.29.0",
|
||||
|
|
|
@ -21,7 +21,7 @@ services:
|
|||
tipi-db:
|
||||
container_name: tipi-db
|
||||
image: postgres:14
|
||||
restart: on-failure
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 1m
|
||||
ports:
|
||||
- ${POSTGRES_PORT:-5432}:5432
|
||||
|
@ -60,7 +60,6 @@ services:
|
|||
container_name: tipi-worker
|
||||
image: ghcr.io/runtipi/worker:${TIPI_VERSION}
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
healthcheck:
|
||||
test: ['CMD', 'curl', '-f', 'http://localhost:3000/healthcheck']
|
||||
interval: 5s
|
||||
|
@ -78,7 +77,6 @@ services:
|
|||
NODE_ENV: production
|
||||
volumes:
|
||||
# Core
|
||||
- /:/host/root:ro
|
||||
- /proc:/host/proc
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# App
|
||||
|
|
|
@ -8,7 +8,7 @@ async function bundle() {
|
|||
entryPoints: ['./src/index.ts'],
|
||||
outfile: './dist/index.js',
|
||||
platform: 'node',
|
||||
target: 'node18',
|
||||
target: 'node20',
|
||||
bundle: true,
|
||||
color: true,
|
||||
sourcemap: commandArgs.includes('--sourcemap'),
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
"test": "dotenv -e .env.test vitest -- --coverage --watch=false --passWithNoTests",
|
||||
"test:watch": "dotenv -e .env.test vitest",
|
||||
"package": "npm run build && pkg package.json && chmod +x dist/bin/cli-x64 && chmod +x dist/bin/cli-arm64",
|
||||
"package:m1": "npm run build && pkg package.json -t node18-darwin-arm64",
|
||||
"package:m1": "npm run build && pkg package.json -t node20-darwin-arm64",
|
||||
"set-version": "node -e \"require('fs').writeFileSync('assets/VERSION', process.argv[1])\"",
|
||||
"build": "node build.js",
|
||||
"build:meta": "esbuild ./src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js --metafile=meta.json --analyze",
|
||||
"build:meta": "esbuild ./src/index.ts --bundle --platform=node --target=node20 --outfile=dist/index.js --metafile=meta.json --analyze",
|
||||
"dev": "dotenv -e ../../.env nodemon",
|
||||
"lint": "eslint . --ext .ts",
|
||||
"tsc": "tsc --noEmit",
|
||||
|
@ -20,8 +20,8 @@
|
|||
"pkg": {
|
||||
"assets": "assets/**/*",
|
||||
"targets": [
|
||||
"node18-linux-x64",
|
||||
"node18-linux-arm64"
|
||||
"node20-linux-x64",
|
||||
"node20-linux-arm64"
|
||||
],
|
||||
"outputPath": "dist/bin"
|
||||
},
|
||||
|
@ -30,7 +30,7 @@
|
|||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@faker-js/faker": "^8.2.0",
|
||||
"@types/cli-progress": "^3.11.4",
|
||||
"@types/cli-progress": "^3.11.5",
|
||||
"@types/node": "20.8.10",
|
||||
"dotenv-cli": "^7.3.0",
|
||||
"esbuild": "^0.19.4",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
ARG NODE_VERSION="18.16"
|
||||
ARG NODE_VERSION="20.10"
|
||||
ARG ALPINE_VERSION="3.18"
|
||||
|
||||
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS node_base
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
ARG NODE_VERSION="18.16"
|
||||
ARG NODE_VERSION="20.10"
|
||||
ARG ALPINE_VERSION="3.18"
|
||||
|
||||
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS node_base
|
||||
|
|
|
@ -8,7 +8,7 @@ async function bundle() {
|
|||
entryPoints: ['./src/index.ts'],
|
||||
outfile: './dist/index.js',
|
||||
platform: 'node',
|
||||
target: 'node18',
|
||||
target: 'node20',
|
||||
bundle: true,
|
||||
color: true,
|
||||
sourcemap: commandArgs.includes('--sourcemap'),
|
||||
|
|
|
@ -36,8 +36,7 @@ export class SystemExecutors {
|
|||
this.logger.error(`Unable to read /host/proc/meminfo: ${e}`);
|
||||
}
|
||||
|
||||
const disks = await si.fsSize();
|
||||
const disk0 = disks.find((disk) => disk.mount.startsWith('/host/root')) || disks[0];
|
||||
const [disk0] = await si.fsSize();
|
||||
|
||||
return {
|
||||
cpu: { load: currentLoad },
|
||||
|
|
2530
pnpm-lock.yaml
generated
2530
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
|
@ -121,16 +121,12 @@ if ! command -v docker >/dev/null; then
|
|||
install_docker "${OS}"
|
||||
docker_result=$?
|
||||
|
||||
if [[ docker_result -eq 0 ]]; then
|
||||
echo "Docker installed"
|
||||
else
|
||||
if [[ docker_result -ne 0 ]]; then
|
||||
echo "Your system ${OS} is not supported trying with sub_os ${SUB_OS}"
|
||||
install_docker "${SUB_OS}"
|
||||
docker_sub_result=$?
|
||||
|
||||
if [[ docker_sub_result -eq 0 ]]; then
|
||||
echo "Docker installed"
|
||||
else
|
||||
if [[ docker_sub_result -ne 0 ]]; then
|
||||
echo "Your system ${SUB_OS} is not supported please install docker manually"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -138,11 +134,15 @@ if ! command -v docker >/dev/null; then
|
|||
|
||||
# Make sure user is in docker group
|
||||
if ! groups | grep -q '\bdocker\b'; then
|
||||
echo "Adding user to docker group"
|
||||
sudo usermod -aG docker "$USER"
|
||||
echo "✓ Docker installed. Please re-run the installation script to continue with the installation. (curl -L https://setup.runtipi.io | bash)"
|
||||
fi
|
||||
|
||||
# Reload user groups
|
||||
newgrp docker
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
function check_dependency_and_install() {
|
||||
|
|
|
@ -2,7 +2,7 @@ import React from 'react';
|
|||
import type { Metadata } from 'next';
|
||||
|
||||
import { cookies } from 'next/headers';
|
||||
import { Inter } from 'next/font/google';
|
||||
import { GeistSans } from 'geist/font/sans';
|
||||
import merge from 'lodash.merge';
|
||||
import { NextIntlClientProvider } from 'next-intl';
|
||||
import { getConfig } from '@/server/core/TipiConfig';
|
||||
|
@ -13,11 +13,6 @@ import { Toaster } from 'react-hot-toast';
|
|||
import { getCurrentLocale } from '../utils/getCurrentLocale';
|
||||
import { ClientProviders } from './components/ClientProviders';
|
||||
|
||||
const inter = Inter({
|
||||
subsets: ['latin'],
|
||||
display: 'swap',
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Tipi',
|
||||
description: 'Tipi',
|
||||
|
@ -35,7 +30,7 @@ export default async function RootLayout({ children }: { children: React.ReactNo
|
|||
const { allowAutoThemes } = getConfig();
|
||||
|
||||
return (
|
||||
<html lang={locale} className={clsx(inter.className, 'border-top-wide border-primary')}>
|
||||
<html lang={locale} className={clsx(GeistSans.className, 'border-top-wide border-primary')}>
|
||||
<NextIntlClientProvider locale={locale} messages={mergedMessages}>
|
||||
<ClientProviders initialTheme={theme?.value} cookies={cookies().getAll()} allowAutoThemes={allowAutoThemes}>
|
||||
<body data-bs-theme={theme?.value}>
|
||||
|
|
Loading…
Add table
Reference in a new issue