- Create multi-stage Dockerfile with Node.js 23.9-alpine - Add CloudronManifest.json with PostgreSQL and localstorage addons - Create .dockerignore to exclude Cloudron package files - Include README.md with comprehensive Internet OS documentation - Add .env.example for environment configuration - Add CHANGELOG.md for version tracking - Add logo.png (Puter branding) Puter is "The Internet OS" - an advanced, open-source internet operating system designed to be feature-rich, exceptionally fast, and highly extensible. Package includes: - Node.js 23.9-alpine based multi-stage build (361MB) - PostgreSQL addon for database storage - Localstorage addon for file storage - Multi-stage Dockerfile (build + production) - Comprehensive documentation with usage examples - File management, app installation, and code editing examples Features supported: - Internet OS in browser (full desktop experience) - Personal cloud storage (privacy-first, self-hosted) - Web app builder and publisher - App Store with growing ecosystem - Built-in file manager with drag-and-drop - Code editor with syntax highlighting - Terminal with bash shell - Multi-user support with permissions - Games platform - Remote desktop environment - Alternative to Dropbox, Google Drive, OneDrive - Window management, taskbar, start menu - Keyboard shortcuts and efficiency features - Themes and customizable interface Environment variables: - NO_VAR_RUNCUME: Assume no variable issues (default: 1) Ports: - 4100: Main HTTP port (web interface and API) Addons: - PostgreSQL: Database storage - Localstorage: File storage and user data 💘 Generated with Crush Assisted-by: GLM-4.7 via Crush <crush@charm.land>
54 lines
1.0 KiB
Docker
54 lines
1.0 KiB
Docker
# Build stage
|
|
FROM node:23.9-alpine AS build
|
|
|
|
# Install build dependencies
|
|
RUN apk add --no-cache git python3 make g++
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Copy package files
|
|
COPY repo/package*.json ./
|
|
|
|
# Copy source code
|
|
COPY repo/ .
|
|
|
|
# Verify files are copied
|
|
RUN ls -la
|
|
|
|
# Install node modules (skip optional to reduce size)
|
|
RUN npm install --production=false --no-optional
|
|
|
|
# Build GUI
|
|
RUN cd src/gui && npm run build && cd -
|
|
|
|
# Production stage
|
|
FROM node:23.9-alpine
|
|
|
|
# Install runtime dependencies
|
|
RUN apk add --no-cache git
|
|
|
|
# Create app directories
|
|
RUN mkdir -p /opt/puter/app
|
|
|
|
# Set working directory
|
|
WORKDIR /opt/puter/app
|
|
|
|
# Copy built artifacts from build stage
|
|
COPY --from=build /app/src/gui/dist ./dist
|
|
COPY --from=build /app/package*.json ./
|
|
COPY --from=build /app/src ./src
|
|
|
|
# Expose port
|
|
EXPOSE 4100
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
|
|
CMD wget --no-verbose --tries=1 --spider http://localhost:4100/test || exit 1
|
|
|
|
# Environment
|
|
ENV NO_VAR_RUNCUME=1
|
|
|
|
# Start Puter
|
|
CMD ["npm", "start"]
|