diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..c1e3118
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,80 @@
+FROM node:18-alpine AS base
+
+# Step 1. Rebuild the source code only when needed
+FROM base AS builder
+
+WORKDIR /app
+
+# Install dependencies based on the preferred package manager
+COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
+# Omit --production flag for TypeScript devDependencies
+RUN \
+ if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
+ elif [ -f package-lock.json ]; then npm ci; \
+ elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i; \
+ # Allow install without lockfile, so example works even without Node.js installed locally
+ else echo "Warning: Lockfile not found. It is recommended to commit lockfiles to version control." && yarn install; \
+ fi
+
+COPY components ./components
+COPY styles ./styles
+COPY app ./app
+COPY config ./config
+COPY node_modules ./node_modules
+COPY types ./types
+COPY public ./public
+COPY next.config.js .
+COPY tsconfig.json .
+COPY postcss.config.js .
+COPY tailwind.config.js .
+
+# Environment variables must be present at build time
+# https://github.com/vercel/next.js/discussions/14030
+ARG ENV_VARIABLE
+ENV ENV_VARIABLE=${ENV_VARIABLE}
+ARG NEXT_PUBLIC_ENV_VARIABLE
+ENV NEXT_PUBLIC_ENV_VARIABLE=${NEXT_PUBLIC_ENV_VARIABLE}
+
+# Next.js collects completely anonymous telemetry data about general usage. Learn more here: https://nextjs.org/telemetry
+# Uncomment the following line to disable telemetry at build time
+# ENV NEXT_TELEMETRY_DISABLED 1
+
+# Build Next.js based on the preferred package manager
+RUN \
+ if [ -f yarn.lock ]; then yarn build; \
+ elif [ -f package-lock.json ]; then npm run build; \
+ elif [ -f pnpm-lock.yaml ]; then pnpm build; \
+ else npm run build; \
+ fi
+
+# Note: It is not necessary to add an intermediate step that does a full copy of `node_modules` here
+
+# Step 2. Production image, copy all the files and run next
+FROM base AS runner
+
+WORKDIR /app
+
+# Don't run production as root
+RUN addgroup --system --gid 1001 nodejs
+RUN adduser --system --uid 1001 nextjs
+USER nextjs
+
+COPY --from=builder /app/public ./public
+
+# Automatically leverage output traces to reduce image size
+# https://nextjs.org/docs/advanced-features/output-file-tracing
+COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
+COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
+
+# Environment variables must be redefined at run time
+ARG ENV_VARIABLE
+ENV ENV_VARIABLE=${ENV_VARIABLE}
+ARG NEXT_PUBLIC_ENV_VARIABLE
+ENV NEXT_PUBLIC_ENV_VARIABLE=${NEXT_PUBLIC_ENV_VARIABLE}
+
+# Uncomment the following line to disable telemetry at run time
+# ENV NEXT_TELEMETRY_DISABLED 1
+
+# Note: Don't expose ports here, Compose will handle that for us
+
+CMD ["node", "server.js"]
diff --git a/app/page.tsx b/app/page.tsx
index 917349b..793bb8e 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -4,7 +4,7 @@ import { button as buttonStyles } from "@nextui-org/theme";
import { siteConfig } from "@/config/site";
import { title, subtitle } from "@/components/primitives";
-import { GithubIcon, TwitterIcon, MavenIcon, GiteaIcon } from "@/components/icons";
+import { GithubIcon, TwitterIcon, MavenIcon, GiteaIcon, AListIcon } from "@/components/icons";
export default function Home() {
return (
@@ -37,6 +37,13 @@ export default function Home() {
>
+
+
+
= ({
width={size || width}
{...props}
>
-
+
+
+ );
+};
+export const AListIcon: React.FC = ({
+ size = 24,
+ width,
+ height,
+ ...props
+}) => {
+ return (
+
);
};
diff --git a/config/site.ts b/config/site.ts
index 2da0ffd..4362d82 100644
--- a/config/site.ts
+++ b/config/site.ts
@@ -64,5 +64,6 @@ export const siteConfig = {
twitter: "https://x.com/DeerioChaelingo",
maven: "https://maven.deechael.net",
gitea: "https://git.deechael.net",
+ alist: "https://files.deechael.net",
},
};