Monorepo for Aesthetic.Computer
aesthetic.computer
1FROM fedora:latest
2
3ENV DISPLAY=:1
4ENV XVFB_RESOLUTION=320x240x24
5ENV LD_LIBRARY_PATH=/usr/local/lib
6ENV DBUS_SESSION_BUS_ADDRESS=/dev/null
7
8WORKDIR /app
9
10# --- Base system and dependencies ---
11RUN dnf install -y \
12 git wget curl tar make gcc gcc-c++ \
13 autoconf automake libtool cmake \
14 nasm yasm \
15 xorg-x11-server-Xvfb \
16 chromium \
17 pulseaudio pulseaudio-utils alsa-utils libXScrnSaver \
18 pulseaudio-libs-devel \
19 freetype-devel fontconfig-devel libass-devel \
20 lame-devel opus-devel libvpx-devel \
21 openssl-devel pcre-devel zlib-devel \
22 libX11-devel libXfixes-devel \
23 dbus \
24 pkgconfig && \
25 mkdir -p /run/dbus && \
26 dnf clean all
27
28# --- Build and install x264 from source ---
29WORKDIR /tmp
30RUN git clone https://code.videolan.org/videolan/x264.git && \
31 cd x264 && \
32 ./configure --prefix=/usr/local --enable-shared --disable-cli && \
33 make -j$(nproc) && \
34 make install
35
36# --- Build and install FFmpeg with libx264 ---
37WORKDIR /tmp
38RUN git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg && \
39 cd ffmpeg && \
40 PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" ./configure \
41 --prefix=/usr/local \
42 --enable-gpl \
43 --enable-libx264 \
44 --enable-libfreetype \
45 --enable-libass \
46 --enable-libpulse \
47 --enable-libopus \
48 --enable-libmp3lame \
49 --enable-libvpx \
50 --enable-libfontconfig \
51 --enable-shared \
52 --disable-static && \
53 make -j$(nproc) && \
54 make install && \
55 ldconfig
56
57# --- Build and install nginx with RTMP module ---
58WORKDIR /tmp
59RUN curl -LO http://nginx.org/download/nginx-1.25.4.tar.gz && \
60 tar -xzf nginx-1.25.4.tar.gz && \
61 git clone https://github.com/arut/nginx-rtmp-module.git && \
62 cd nginx-1.25.4 && \
63 ./configure --add-module=../nginx-rtmp-module && \
64 make && \
65 make install
66
67# --- Setup app ---
68WORKDIR /app
69COPY stream.sh .
70COPY nginx.conf /usr/local/nginx/conf/nginx.conf
71RUN chmod +x stream.sh
72
73EXPOSE 1935
74EXPOSE 8080
75EXPOSE 9222
76
77CMD ["./stream.sh"]
78