Compare commits

..
Author SHA1 Message Date
Thomas Camlong 457de5750d fix: chown /appdata volume so non-root user can create subdirectories 2026-06-05 14:20:57 +02:00
Thomas 798635e9a8 Merge branch 'dev' into fix-truenas-startup-time 2026-06-05 00:17:42 +02:00
Thomas e293f95573 Remove chown for websocket and tasks files
Removed unnecessary ownership changes for websocket and tasks files.
2026-06-05 00:17:14 +02:00
ajnart a4522132c8 style: auto-fix lint and format 2026-06-04 22:13:47 +00:00
Meier Lukas 91bbc5e2df fix(startup): reduce chown operations during startup for custom user 2025-06-21 12:37:25 +02:00
4 changed files with 15 additions and 7 deletions

No files matched your search

@@ -10,7 +10,7 @@ import { UserAvatar } from "@homarr/ui";
import { ManageContainer } from "~/components/manage/manage-container";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { catchTrpcNotFound, catchTrpcUnauthorized } from "~/errors/trpc-catch-error";
import { catchTrpcNotFound } from "~/errors/trpc-catch-error";
import { NavigationLink } from "../groups/[id]/_navigation";
import { canAccessUserEditPage } from "./access";
@@ -26,7 +26,7 @@ export default async function Layout(props: PropsWithChildren<LayoutProps>) {
const session = await auth();
const t = await getI18n();
const tUser = await getScopedI18n("management.page.user");
const user = await api.user.getById({ userId: params.userId }).catch(catchTrpcNotFound).catch(catchTrpcUnauthorized);
const user = await api.user.getById({ userId: params.userId }).catch(catchTrpcNotFound);
if (!canAccessUserEditPage(session, user.id)) {
notFound();
@@ -5,7 +5,7 @@ import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
import { getScopedI18n } from "@homarr/translation/server";
import { catchTrpcNotFound, catchTrpcUnauthorized } from "~/errors/trpc-catch-error";
import { catchTrpcNotFound } from "~/errors/trpc-catch-error";
import { canAccessUserEditPage } from "../access";
import { ChangePasswordForm } from "./_components/_change-password-form";
@@ -23,8 +23,7 @@ export default async function UserSecurityPage(props: Props) {
.getById({
userId: params.userId,
})
.catch(catchTrpcNotFound)
.catch(catchTrpcUnauthorized);
.catch(catchTrpcNotFound);
if (!canAccessUserEditPage(session, user.id)) {
notFound();
@@ -45,7 +45,7 @@ export const UserAvatarMenu = ({ children, availableUpdatesPromise }: UserAvatar
window.location.assign(logoutUrl);
return;
}
router.push("/auth/login");
router.refresh();
},
});
}, [logoutUrl, openModal, router]);
+10 -1
View File
@@ -9,12 +9,21 @@ echo "Starting with UID='$PUID', GID='$PGID'"
if [ "${PUID}" != "0" ] || [ "${PGID}" != "0" ]; then
# The below command will change the owner of all files in the /app directory (except node_modules) to the new UID and GID
echo "Changing owner to $PUID:$PGID, this will take about 10 seconds..."
find . -name 'node_modules' -prune -o -mindepth 1 -maxdepth 1 -exec chown -R $PUID:$PGID {} +
chown $PUID:$PGID ./run.sh
chown $PUID:$PGID ./apps/cli
chown $PUID:$PGID ./apps/nextjs/server.js
chown $PUID:$PGID ./apps/nextjs/.next
mkdir -p ./apps/nextjs/.next/cache
chown $PUID:$PGID ./apps/nextjs/.next/cache
chown $PUID:$PGID ./db/migrations/sqlite/migrate.cjs
chown $PUID:$PGID ./db/migrations/mysql/migrate.cjs
chown $PUID:$PGID ./build/better_sqlite3.node
chown -R $PUID:$PGID /var/cache/nginx
chown -R $PUID:$PGID /var/log/nginx
chown -R $PUID:$PGID /var/lib/nginx
chown -R $PUID:$PGID /run/nginx/nginx.pid
chown -R $PUID:$PGID /etc/nginx
chown $PUID:$PGID /appdata
echo "Changing owner to $PUID:$PGID, done."
fi