# Use Ubuntu 22.04 base image FROM ubuntu:22.04 # Set environment variables for configuration ENV PANEL_PORT=7860 \ ADMIN_USERNAME=admin \ ADMIN_PASSWORD=changeme \ PUFFER_DATA_DIR=/workspace/pufferpanel_data \ USER_ID=1000 \ GROUP_ID=1000 # Install dependencies and clean up RUN apt-get update && \ apt-get install -y wget curl sqlite3 && \ rm -rf /var/lib/apt/lists/* # Download and install PufferPanel RUN wget -q https://github.com/pufferpanel/pufferpanel/releases/download/v3.0.0-rc.14/pufferpanel_3.0.0-rc.14_amd64.deb && \ dpkg -i pufferpanel_3.0.0-rc.14_amd64.deb || apt-get install -f -y && \ rm pufferpanel_3.0.0-rc.14_amd64.deb # Create persistent storage directories RUN mkdir -p ${PUFFER_DATA_DIR}/servers \ ${PUFFER_DATA_DIR}/modules \ ${PUFFER_DATA_DIR}/cache # Create config file from environment variables RUN echo '{ \ "web": { \ "host": "0.0.0.0", \ "port": '${PANEL_PORT}' \ }, \ "ssl": { \ "enabled": false, \ "redirect": false \ }, \ "database": { \ "url": "sqlite:'${PUFFER_DATA_DIR}'/data.db", \ "type": "sqlite" \ }, \ "data": { \ "servers": "'${PUFFER_DATA_DIR}'/servers", \ "modules": "'${PUFFER_DATA_DIR}'/modules", \ "cache": "'${PUFFER_DATA_DIR}'/cache" \ } \ }' > /etc/pufferpanel/config.json # Create a user with the host user's UID/GID RUN groupadd -g ${GROUP_ID} pufferuser && \ useradd -u ${USER_ID} -g pufferuser -m pufferuser # Set ownership for required directories RUN chown -R pufferuser:pufferuser ${PUFFER_DATA_DIR} && \ chown -R pufferuser:pufferuser /etc/pufferpanel && \ chown -R pufferuser:pufferuser /var/lib/pufferpanel && \ chown -R pufferuser:pufferuser /var/log/pufferpanel # Expose the panel port EXPOSE ${PANEL_PORT} # Start script to create admin user and run panel COPY start.sh /start.sh RUN chmod +x /start.sh # Run as non-root user USER pufferuser CMD ["/start.sh"]