# Start from the Debian image FROM debian:latest # Install build dependencies RUN apt-get update && apt-get install -y \ git \ qtbase5-dev \ qt5-qmake \ qtmultimedia5-dev \ libqt5x11extras5-dev \ libsqlcipher-dev \ cmake \ doxygen \ rapidjson-dev \ miniupnpc \ libmicrohttpd-dev \ libxss-dev \ libxapian-dev \ g++ \ make \ libssl-dev \ libbz2-dev \ libupnp-dev \ libzip-dev \ pkg-config \ qttools5-dev \ libminiupnpc-dev # Install runtime dependencies and cleanup RUN apt-get install -y \ expect \ libxss1 \ sqlcipher \ tor \ && rm -rf /var/lib/apt/lists/* # Add a new user RUN useradd -m retroshareuser # Switch to the new user USER retroshareuser ############################################ # Build RetroShare ############################################ # Set the working directory WORKDIR /home/retroshareuser # Clone the RetroShare repository RUN git clone https://github.com/RetroShare/RetroShare.git # Go to the RetroShare directory WORKDIR /home/retroshareuser/RetroShare # Update submodules RUN git submodule update --init --remote --force openpgpsdk/ libretroshare/ libbitdht/ retroshare-webui/ # Configure the build RUN qmake CONFIG+="release rs_jsonapi rs_webui retroshare_service ipv6 no_tests" CONFIG-="debug" RS_UPNP_LIB=miniupnpc # Build RetroShare RUN /bin/bash -c "\ make -j 1 || (rmdir supportlibs/restbed/include && make -j 1) \ " ############################################ # End of build ############################################ RUN mkdir -p /home/retroshareuser/.local/bin # Copy files to the correct places and set permissions RUN cp -r /home/retroshareuser/RetroShare/retroshare-webui/webui /home/retroshareuser/webui RUN cp /home/retroshareuser/RetroShare/retroshare-service/src/retroshare-service /home/retroshareuser/.local/bin/ RUN chmod +x /home/retroshareuser/.local/bin/retroshare-service # Copy the script startup.sh to the path and make it executable COPY --chown=retroshareuser startup.sh /home/retroshareuser/.local/bin/ RUN chmod +x /home/retroshareuser/.local/bin/startup.sh USER root # Cleanup RUN apt-get remove -y \ git \ qtbase5-dev \ qt5-qmake \ qtmultimedia5-dev \ libqt5x11extras5-dev \ libsqlcipher-dev \ cmake \ doxygen \ rapidjson-dev \ libmicrohttpd-dev \ libxss-dev \ libxapian-dev \ g++ \ make \ libssl-dev \ libbz2-dev \ libupnp-dev \ libzip-dev \ pkg-config \ qttools5-dev \ libminiupnpc-dev \ && apt-get autoremove -y RUN rm -rf /home/retroshareuser/RetroShare USER retroshareuser # Expose port 9092 EXPOSE 9092 # Expose volumes VOLUME /home/retroshareuser/.retroshare # Set environment variables ENV WEBUI_PASSWORD="" ENV USER_ID="" ENV USER_PASSWORD="" # Run the startup.sh script CMD /home/retroshareuser/.local/bin/startup.sh $WEBUI_PASSWORD $USER_ID $USER_PASSWORD # docker build -t "retroshare-webui" .