Migrating Linux to 1.5.

Still some details to adjust to be perfect
This commit is contained in:
AxyFr 2022-11-17 17:20:46 +01:00
parent 984b6c5f05
commit bf19cfe3db
13 changed files with 159 additions and 129 deletions

View File

@ -26,14 +26,23 @@ RUN dnf install yum-utils -y && \
dnf install nginx-1.20.2 -y
# Compile and install dependencies
RUN dnf install -y python39-pip brotli brotli-devel gperftools-devel perl libxslt-devel libxml2 libxslt bash gd gd-devel gcc-c++ kernel-devel curl znc-modtcl libmpc-devel gmp-devel gawk mpfr-devel libtool pcre-devel automake autoconf readline-devel gcc make openssl-devel git zlib-devel libxml2-devel pkgconf libcurl-devel geoip-devel lmdb-libs && \
RUN dnf install -y python39-pip brotli brotli-devel wget gperftools-devel perl libxslt-devel libxml2 libxslt bash gd gd-devel gcc-c++ kernel-devel curl znc-modtcl libmpc-devel gmp-devel gawk mpfr-devel libtool pcre-devel automake autoconf readline-devel gcc make openssl-devel git zlib-devel libxml2-devel pkgconf libcurl-devel geoip-devel lmdb-libs && \
mkdir -p /usr/share/bunkerweb/deps && \
chmod +x /tmp/bunkerweb/deps/install.sh && \
bash /tmp/bunkerweb/deps/install.sh && \
mkdir /usr/share/bunkerweb/deps/python && \
# Dirty fix to avoid errors with --target and packages same namespace
cp -r /usr/lib64/python3.9/* /usr/lib/python3.9/ && \
PYTHONPLATLIBDIR=lib pip3.9 install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
mkdir /usr/share/bunkerweb/deps/python
# Install python 3.10
RUN wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz && \
tar -xvf Python-3.10.8.tgz && \
cd Python-3.10.8 && \
./configure --enable-optimizations && \
make altinstall && \
cd .. && \
rm -rf Python-3.10.8 && \
rm -rf Python-3.10.8.tgz
RUN pip3.10 install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
# Copy files
# can't exclude deps from . so we are copying everything by hand
@ -53,33 +62,40 @@ COPY src/scheduler /usr/share/bunkerweb/scheduler
COPY src/ui /usr/share/bunkerweb/ui
COPY src/VERSION /usr/share/bunkerweb/VERSION
# Setup BW
RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
chmod 755 /usr/bin/bwcli && \
mkdir /etc/bunkerweb/configs && \
mkdir /var/cache/bunkerweb/ && \
mkdir /etc/bunkerweb/plugins && \
mkdir /var/tmp/bunkerweb/ && \
mkdir -p /etc/bunkerweb/configs && \
mkdir -p /var/cache/bunkerweb/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www && \
#mkdir /var/www/html && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
#It's a find command that will find all files in the bunkerweb directory, excluding the ui/deps directory, and then chmod them to 0740.
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type f -exec chmod 0740 {} \; && \
#It's a find command that will find all files in the bunkerweb directory, excluding the ui/deps directory, and then chmod them to 0740.
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type d -exec chmod 0750 {} \; && \
chmod 770 /var/cache/bunkerweb/ /var/tmp/bunkerweb/ && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py /var/www && \
# Don't forget to add /var/www/html on the above line
find /usr/share/bunkerweb/core/*/jobs/* -type f -exec chmod 750 {} \; && \
pip3.9 install --no-cache-dir --require-hashes --no-deps --target /usr/bin/bunkerweb/deps/python -r /usr/bin/bunkerweb/ui/deps/requirements.txt && \
pip3.10 install --no-cache-dir --upgrade pip && \
pip3.10 install wheel && \
mkdir -p /usr/share/bunkerweb/ui/deps/python && \
pip3.10 install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
pip3.10 install --no-cache-dir gunicorn && \
chmod 755 /usr/share/bunkerweb
# Copy Linux files
COPY src/linux/variables.env /etc/bunkerweb/variables.env
COPY src/linux/ui.env /etc/bunkerweb/ui.env
COPY src/linux/scripts /usr/share/bunkerweb/scripts
COPY src/linux/fpm.sh /usr/share/fpm.sh
RUN chmod +x /usr/share/bunkerweb/scripts/*.sh /usr/share/fpm.sh
COPY src/linux/fpm-ubuntu /usr/share/.fpm
COPY src/linux/bunkerweb.service /usr/share/bunkerweb.service
COPY src/linux/bunkerweb-ui.service /usr/share/bunkerweb-ui.service
COPY src/linux/bunkerweb.service /etc/systemd/system/bunkerweb.service
COPY src/linux/bunkerweb-ui.service /etc/systemd/system/bunkerweb-ui.service
# Generate DEB at startup
VOLUME /data
WORKDIR /usr/share/
ENTRYPOINT ["/usr/share/fpm.sh", "deb"]
ENTRYPOINT ["/usr/share/fpm.sh", "rpm"]

View File

@ -9,7 +9,7 @@ RUN apt update && \
gem install fpm
# Copy dependencies sources folder
COPY src/common/deps /tmp/bunkerweb/deps
COPY src/deps /tmp/bunkerweb/deps
COPY src/scheduler/requirements.txt /tmp/req/requirements.txt
COPY src/ui/requirements.txt /tmp/req/requirements.txt.1
COPY src/common/gen/requirements.txt /tmp/req/requirements.txt.2
@ -34,8 +34,11 @@ RUN apt update && \
mkdir -p /usr/share/bunkerweb/deps && \
chmod +x /tmp/bunkerweb/deps/install.sh && \
bash /tmp/bunkerweb/deps/install.sh && \
mkdir /usr/share/bunkerweb/deps/python && \
pip3 install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
mkdir /usr/share/bunkerweb/deps/python
# Dirty fix to avoid errors with --target and packages same namespace
RUN pip install --no-deps --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
# Copy files
# can't exclude deps from . so we are copying everything by hand
COPY src/bw/loading /usr/share/bunkerweb/loading
@ -57,10 +60,11 @@ COPY src/VERSION /usr/share/bunkerweb/VERSION
# Setup BW
RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
chmod 755 /usr/bin/bwcli && \
mkdir /etc/bunkerweb/configs && \
mkdir /var/cache/bunkerweb/ && \
mkdir /etc/bunkerweb/plugins && \
mkdir /var/tmp/bunkerweb/ && \
mkdir -p /etc/bunkerweb/configs && \
mkdir -p /var/cache/bunkerweb/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www/ && \
#mkdir /var/www/html && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
#It's a find command that will find all files in the bunkerweb directory, excluding the ui/deps directory, and then chmod them to 0740.
@ -68,25 +72,23 @@ RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
#It's a find command that will find all files in the bunkerweb directory, excluding the ui/deps directory, and then chmod them to 0740.
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type d -exec chmod 0750 {} \; && \
chmod 770 /var/cache/bunkerweb/ /var/tmp/bunkerweb/ && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py /var/www/ && \
# Don't forget to add /var/www/html on the above line
find /usr/share/bunkerweb/core/*/jobs/* -type f -exec chmod 750 {} \; && \
pip install --no-cache-dir --upgrade pip && \
pip install wheel && \
mkdir /usr/share/bunkerweb/ui/deps/python && \
pip install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /usr/share/bunkerweb/ui/deps/requirements.txt && \
mkdir -p /usr/share/bunkerweb/ui/deps/python && \
pip install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
pip install --no-cache-dir gunicorn && \
chmod 755 /usr/share/bunkerweb
# Copy Linux files
COPY src/linux/variables.env /etc/bunkerweb/variables.env
COPY src/linux/ui.env /etc/bunkerweb/ui.env
COPY src/linux/scripts /usr/share/bunkerweb/scripts
COPY src/linux/fpm.sh /usr/share/fpm.sh
RUN chmod +x /usr/share/bunkerweb/scripts/*.sh /usr/share/fpm.sh
COPY src/linux/fpm-ubuntu /usr/share/.fpm
COPY src/linux/bunkerweb.service /usr/share/bunkerweb.service
COPY src/linux/bunkerweb-ui.service /usr/share/bunkerweb-ui.service
COPY src/linux/bunkerweb.service /etc/systemd/system/bunkerweb.service
COPY src/linux/bunkerweb-ui.service /etc/systemd/system/bunkerweb-ui.service
# Generate DEB at startup
VOLUME /data

View File

@ -13,7 +13,7 @@ RUN dnf update -y && \
dnf install nginx-1.20.2 -y
# Copy dependencies sources folder
COPY src/common/deps /tmp/bunkerweb/deps
COPY src/deps /tmp/bunkerweb/deps
COPY src/scheduler/requirements.txt /tmp/req/requirements.txt
COPY src/ui/requirements.txt /tmp/req/requirements.txt.1
COPY src/common/gen/requirements.txt /tmp/req/requirements.txt.2
@ -54,30 +54,33 @@ COPY src/VERSION /usr/share/bunkerweb/VERSION
# Setup BW
RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
chmod 755 /usr/bin/bwcli && \
mkdir /etc/bunkerweb/configs && \
mkdir /var/cache/bunkerweb/ && \
mkdir /etc/bunkerweb/plugins && \
mkdir /var/tmp/bunkerweb/ && \
mkdir -p /etc/bunkerweb/configs && \
mkdir -p /var/cache/bunkerweb/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www/ && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/deps -prune -o -type f -exec chmod 0740 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/deps -prune -o -type d -exec chmod 0750 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type f -exec chmod 0740 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type d -exec chmod 0750 {} \; && \
chmod 770 /var/cache/bunkerweb/ /var/tmp/bunkerweb/ && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py /var/www/ && \
find /usr/share/bunkerweb/core/*/jobs/* -type f -exec chmod 750 {} \; && \
pip install --no-cache-dir --target /usr/share/bunkerweb/deps/python -r /usr/share/bunkerweb/ui/deps/requirements.txt && \
pip install --no-cache-dir --upgrade pip && \
pip install wheel && \
mkdir -p /usr/share/bunkerweb/ui/deps/python && \
pip install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
pip install --no-cache-dir gunicorn && \
chmod 755 /usr/share/bunkerweb
# Copy Linux files
COPY src/linux/variables.env /etc/bunkerweb/variables.env
COPY src/linux/ui.env /etc/bunkerweb/ui.env
COPY src/linux/scripts /usr/share/bunkerweb/scripts
COPY src/linux/fpm.sh /usr/share/fpm.sh
RUN chmod +x /usr/share/bunkerweb/scripts/*.sh /usr/share/fpm.sh
COPY src/linux/fpm-ubuntu /usr/share/.fpm
COPY src/linux/bunkerweb.service /usr/share/bunkerweb.service
COPY src/linux/bunkerweb-ui.service /usr/share/bunkerweb-ui.service
COPY src/linux/bunkerweb.service /etc/systemd/system/bunkerweb.service
COPY src/linux/bunkerweb-ui.service /etc/systemd/system/bunkerweb-ui.service
# Generate DEB at startup
VOLUME /data
WORKDIR /usr/share/
ENTRYPOINT ["/usr/share/fpm.sh", "deb"]
ENTRYPOINT ["/usr/share/fpm.sh", "rpm"]

View File

@ -4,7 +4,7 @@ ENV OS=rhel
ENV NGINX_VERSION 1.20.2
# RHEL subscription
RUN subscription-manager register --username=username --password=password --auto-attach
RUN subscription-manager register --username=bunkerfrsq --password=aTtWafOi2V3TvdnPmHCw --auto-attach
# Install fpm
RUN dnf install -y ruby ruby-devel make gcc redhat-rpm-config rpm-build wget && \
@ -14,12 +14,12 @@ RUN dnf install -y ruby ruby-devel make gcc redhat-rpm-config rpm-build wget &&
gem install fpm
# Nginx
COPY linux/nginx.repo /etc/yum.repos.d/nginx.repo
COPY src/linux/nginx.repo /etc/yum.repos.d/nginx.repo
RUN dnf install yum-utils -y && \
dnf install nginx-1.20.2 -y
# Copy dependencies sources folder
COPY src/common/deps /tmp/bunkerweb/deps
COPY src/deps /tmp/bunkerweb/deps
COPY src/scheduler/requirements.txt /tmp/req/requirements.txt
COPY src/ui/requirements.txt /tmp/req/requirements.txt.1
COPY src/common/gen/requirements.txt /tmp/req/requirements.txt.2
@ -30,12 +30,23 @@ RUN mkdir -p /usr/share/bunkerweb/deps && \
rm -rf /tmp/req
# Compile and install dependencies
RUN dnf install -y python39-pip brotli brotli-devel gperftools-devel perl libxslt-devel libxml2 libxslt bash gd gd-devel gcc-c++ kernel-devel curl znc-modtcl libmpc-devel gmp-devel gawk mpfr-devel libtool pcre-devel automake autoconf readline-devel gcc make openssl-devel git zlib-devel libxml2-devel pkgconf libcurl-devel geoip-devel lmdb-libs && \
RUN dnf install -y wget brotli brotli-devel gperftools-devel perl libxslt-devel libxml2 libxslt bash gd gd-devel gcc-c++ kernel-devel curl znc-modtcl libmpc-devel gmp-devel gawk mpfr-devel libtool pcre-devel automake autoconf readline-devel gcc make openssl-devel git zlib-devel libxml2-devel pkgconf libcurl-devel geoip-devel lmdb-libs && \
mkdir -p /usr/share/bunkerweb/deps && \
chmod +x /tmp/bunkerweb/deps/install.sh && \
bash /tmp/bunkerweb/deps/install.sh && \
mkdir /usr/share/bunkerweb/deps/python && \
pip install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
mkdir /usr/share/bunkerweb/deps/python
# Install python 3.10
RUN wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz && \
tar -xvf Python-3.10.8.tgz && \
cd Python-3.10.8 && \
./configure --enable-optimizations && \
make altinstall && \
cd .. && \
rm -rf Python-3.10.8 && \
rm -rf Python-3.10.8.tgz
RUN pip3.10 install --no-cache-dir --require-hashes --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt
# Copy BW files
# can't exclude deps from . so we are copying everything by hand
@ -57,29 +68,32 @@ COPY src/VERSION /usr/share/bunkerweb/VERSION
# Setup BW
RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
chmod 755 /usr/bin/bwcli && \
mkdir /etc/bunkerweb/configs && \
mkdir /var/cache/bunkerweb/ && \
mkdir /etc/bunkerweb/plugins && \
mkdir /var/tmp/bunkerweb/ && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/deps -prune -o -type f -exec chmod 0740 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/deps -prune -o -type d -exec chmod 0750 {} \; && \
chmod 770 /var/cache/bunkerweb/ /var/tmp/bunkerweb/ && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py && \
find /usr/share/bunkerweb/core/*/jobs/* -type f -exec chmod 750 {} \; && \
pip install --no-cache-dir --target /usr/share/bunkerweb/deps/python -r /usr/share/bunkerweb/ui/deps/requirements.txt && \
chmod 755 /usr/share/bunkerweb
chmod 755 /usr/bin/bwcli && \
mkdir -p /etc/bunkerweb/configs && \
mkdir -p /var/cache/bunkerweb/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www/ && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type f -exec chmod 0740 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type d -exec chmod 0750 {} \; && \
chmod 770 /var/cache/bunkerweb/ /var/tmp/bunkerweb/ && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py /var/www/ && \
find /usr/share/bunkerweb/core/*/jobs/* -type f -exec chmod 750 {} \; && \
pip3.10 install --no-cache-dir --upgrade pip && \
pip3.10 install wheel && \
mkdir -p /usr/share/bunkerweb/ui/deps/python && \
pip3.10 install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
pip3.10 install --no-cache-dir gunicorn && \
chmod 755 /usr/share/bunkerweb
# Copy Linux files
COPY src/linux/variables.env /etc/bunkerweb/variables.env
COPY src/linux/ui.env /etc/bunkerweb/ui.env
COPY src/linux/scripts /usr/share/bunkerweb/scripts
COPY src/linux/fpm.sh /usr/share/fpm.sh
RUN chmod +x /usr/share/bunkerweb/scripts/*.sh /usr/share/fpm.sh
COPY src/linux/fpm-rhel /usr/share/.fpm
COPY src/linux/bunkerweb.service /usr/share/bunkerweb.service
COPY src/linux/bunkerweb-ui.service /usr/share/bunkerweb-ui.service
COPY src/linux/fpm-ubuntu /usr/share/.fpm
COPY src/linux/bunkerweb.service /etc/systemd/system/bunkerweb.service
COPY src/linux/bunkerweb-ui.service /etc/systemd/system/bunkerweb-ui.service
# Generate RPM at startup
VOLUME /data

View File

@ -9,7 +9,7 @@ RUN apt update && \
gem install fpm
# Copy dependencies sources folder
COPY src/common/deps /tmp/bunkerweb/deps
COPY src/deps /tmp/bunkerweb/deps
COPY src/scheduler/requirements.txt /tmp/req/requirements.txt
COPY src/ui/requirements.txt /tmp/req/requirements.txt.1
COPY src/common/gen/requirements.txt /tmp/req/requirements.txt.2
@ -58,27 +58,25 @@ COPY src/VERSION /usr/share/bunkerweb/VERSION
# Setup BW
RUN cp /usr/share/bunkerweb/helpers/bwcli /usr/bin/ && \
chmod 755 /usr/bin/bwcli && \
mkdir /etc/bunkerweb/configs && \
mkdir /var/cache/bunkerweb/ && \
mkdir /etc/bunkerweb/plugins && \
mkdir /var/tmp/bunkerweb/ && \
mkdir -p /var/www/html && \
mkdir -p /etc/bunkerweb/configs && \
mkdir -p /var/cache/bunkerweb/ && \
mkdir -p /etc/bunkerweb/plugins && \
mkdir -p /var/tmp/bunkerweb/ && \
mkdir -p /var/www/ && \
echo "Linux" > /usr/share/bunkerweb/INTEGRATION && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type f -exec chmod 0740 {} \; && \
find /usr/share/bunkerweb -path /usr/share/bunkerweb/ui/deps -prune -o -type d -exec chmod 0750 {} \; && \
chmod 770 /var/cache/bunkerweb/ /var/tmp/bunkerweb/ && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py /var/www/html && \
chmod 750 /usr/share/bunkerweb/gen/main.py /usr/share/bunkerweb/scheduler/main.py /usr/share/bunkerweb/cli/main.py /usr/share/bunkerweb/helpers/*.sh /usr/share/bunkerweb/ui/main.py /var/www/ && \
find /usr/share/bunkerweb/core/*/jobs/* -type f -exec chmod 750 {} \; && \
pip install --no-cache-dir --upgrade pip && \
pip install wheel && \
mkdir /usr/share/bunkerweb/ui/deps/python && \
pip install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /usr/share/bunkerweb/ui/deps/requirements.txt && \
mkdir -p /usr/share/bunkerweb/ui/deps/python && \
pip install --no-cache-dir --require-hashes --no-deps --target /usr/share/bunkerweb/deps/python -r /tmp/bunkerweb/deps/requirements.txt && \
pip install --no-cache-dir gunicorn && \
chmod 755 /usr/share/bunkerweb
# Copy Linux files
COPY src/linux/variables.env /etc/bunkerweb/variables.env
COPY src/linux/ui.env /etc/bunkerweb/ui.env
COPY src/linux/scripts /usr/share/bunkerweb/scripts
COPY src/linux/fpm.sh /usr/share/fpm.sh
RUN chmod +x /usr/share/bunkerweb/scripts/*.sh /usr/share/fpm.sh

View File

@ -8,6 +8,5 @@
--url "https://www.bunkerweb.io"
--maintainer "Bunkerity <contact at bunkerity dot com>"
--after-install /usr/share/bunkerweb/scripts/postinstall.sh
--before-remove /usr/share/bunkerweb/scripts/beforeRemove.sh
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb bunkerweb.service=/etc/systemd/system/bunkerweb.service bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service

View File

@ -8,6 +8,5 @@
--url "https://www.bunkerweb.io"
--maintainer "Bunkerity <contact at bunkerity dot com>"
--after-install /usr/share/bunkerweb/scripts/postinstall.sh
--before-remove /usr/share/bunkerweb/scripts/beforeRemove.sh
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb bunkerweb.service=/etc/systemd/system/bunkerweb.service bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service

View File

@ -8,6 +8,5 @@
--url "https://www.bunkerweb.io"
--maintainer "Bunkerity <contact at bunkerity dot com>"
--after-install /usr/share/bunkerweb/scripts/postinstall.sh
--before-remove /usr/share/bunkerweb/scripts/beforeRemove.sh
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb bunkerweb.service=/etc/systemd/system/bunkerweb.service bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service

View File

@ -8,6 +8,5 @@
--url "https://www.bunkerweb.io"
--maintainer "Bunkerity <contact at bunkerity dot com>"
--after-install /usr/share/bunkerweb/scripts/postinstall.sh
--before-remove /usr/share/bunkerweb/scripts/beforeRemove.sh
--after-remove /usr/share/bunkerweb/scripts/afterRemove.sh
/usr/share/bunkerweb/=/usr/share/bunkerweb/ bunkerweb.service=/etc/systemd/system/bunkerweb.service bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service /usr/bin/bwcli=/usr/bin/bwcli
/usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /etc/systemd/system/bunkerweb.service=/etc/systemd/system/bunkerweb.service /etc/systemd/system/bunkerweb-ui.service=/etc/systemd/system/bunkerweb-ui.service

7
src/linux/nginx.repo Normal file
View File

@ -0,0 +1,7 @@
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

View File

@ -1,7 +1,7 @@
#!/bin/bash
# Stop nginx if it's running and remove the old config file if it exists
systemctl stop nginx
systemctl start nginx
# Change the ownership of /usr/share/bunkerweb to nginx
chown -R nginx:nginx /usr/share/bunkerweb

View File

@ -20,10 +20,14 @@ function display_help()
export PYTHONPATH=/usr/share/bunkerweb/deps/python/
# Add nginx to sudoers
if [ ! -f /etc/sudoers.d/bunkerweb ]; then
log "ENTRYPOINT" "" "Adding nginx user to sudoers ..."
echo "nginx ALL=(ALL) NOPASSWD: /bin/systemctl restart bunkerweb" > /etc/sudoers.d/bunkerweb
# Create user scheduler if not exists
if ! id -u scheduler > /dev/null 2>&1; then
# Create group scheduler
groupadd scheduler
# Create user scheduler
useradd scheduler -g scheduler
chown -R scheduler:scheduler /usr/share/bunkerweb /var/cache/bunkerweb /var/lib/bunkerweb /etc/bunkerweb /var/tmp/bunkerweb
chown -R scheduler:scheduler /etc/nginx
fi
#############################################################
@ -46,45 +50,22 @@ function start() {
# setup and check /data folder
/usr/share/bunkerweb/helpers/data.sh "ENTRYPOINT"
# trap SIGTERM and SIGINT
function trap_exit() {
log "ENTRYPOINT" " " "Catched stop operation"
if [ -f "/var/tmp/bunkerweb/scheduler.pid" ] ; then
log "ENTRYPOINT" " " "Stopping job scheduler ..."
kill -s TERM "$(cat /var/rmp/bunkerweb/scheduler.pid)"
fi
}
trap "trap_exit" TERM INT QUIT
# trap SIGHUP
function trap_reload() {
log "ENTRYPOINT" " " "Catched reload operation"
/usr/share/bunkerweb/helpers/scheduler-restart.sh
if [ $? -ne 0 ] ; then
log "ENTRYPOINT" " " "Error while restarting scheduler"
fi
}
trap "trap_reload" HUP
# Init database
# generate "temp" config
#get_env > "/tmp/variables.env"
echo -e "IS_LOADING=yes\nSERVER_NAME=\nAPI_HTTP_PORT=${API_HTTP_PORT:-5000}\nAPI_SERVER_NAME=${API_SERVER_NAME:-bwapi}\nAPI_WHITELIST_IP=${API_WHITELIST_IP:-127.0.0.0/8}" > /tmp/variables.env
/usr/share/bunkerweb/gen/save_config.py --variables /tmp/variables.env --init
echo -e "IS_LOADING=yes\nSERVER_NAME=\nAPI_HTTP_PORT=${API_HTTP_PORT:-5000}\nAPI_SERVER_NAME=${API_SERVER_NAME:-bwapi}\nAPI_WHITELIST_IP=${API_WHITELIST_IP:-127.0.0.0/8}" > /var/tmp/bunkerweb/variables.env
/usr/share/bunkerweb/gen/save_config.py --variables /var/tmp/bunkerweb/variables.env --init
if [ "$?" -ne 0 ] ; then
log "ENTRYPOINT" "❌" "Scheduler generator failed"
exit 1
fi
generate=yes
if [ -f "/etc/nginx/variables.env" ] && grep -q "^IS_LOADING=no$" /etc/nginx/variables.env ; then
log "ENTRYPOINT" "⚠️ " "Looks like BunkerWeb configuration is already generated, will not generate it again"
generate=no
fi
# execute jobs
log "ENTRYPOINT" " " "Executing scheduler ..."
/usr/share/bunkerweb/scheduler/main.py --generate $generate
/usr/share/bunkerweb/scheduler/main.py --variables /var/tmp/bunkerweb/variables.env
if [ "$?" -ne 0 ] ; then
log "ENTRYPOINT" "❌" "Scheduler failed"
exit 1
fi
log "ENTRYPOINT" " " "Scheduler stopped"
exit 0
@ -96,7 +77,7 @@ function stop()
log "ENTRYPOINT" "" "Stopping BunkerWeb service ..."
# Check if pid file exist and remove it if so
PID_FILE_PATH="/var/rmp/bunkerweb/scheduler.pid"
PID_FILE_PATH="/var/tmp/bunkerweb/scheduler.pid"
if [ -f "$PID_FILE_PATH" ];
then
var=$(cat "$PID_FILE_PATH")

View File

@ -107,8 +107,17 @@ if __name__ == "__main__":
integration = "Linux"
api_caller = ApiCaller()
# Define db here because otherwhise it will be undefined for Linux
db = Database(
logger,
sqlalchemy_string=getenv("DATABASE_URI", None),
)
custom_configs = db.get_custom_configs()
# END Define db because otherwhise it will be undefined for Linux
logger.info("Scheduler started ...")
# Checking if the argument variables is true.
if args.variables:
logger.info(f"Variables : {args.variables}")
@ -243,6 +252,7 @@ if __name__ == "__main__":
)
logger.info("Executing scheduler ...")
generate = not exists(
"/var/tmp/bunkerweb/variables.env"
) or env != dotenv_values("/var/tmp/bunkerweb/variables.env")
@ -318,12 +328,15 @@ if __name__ == "__main__":
# reload nginx
if integration == "Linux":
logger.info("Reloading nginx ...")
proc = run(
["/usr/sbin/nginx", "-s", "reload"],
stdin=DEVNULL,
stderr=PIPE,
env=deepcopy(env),
)
# Reloading the nginx server.
# Had to use this instead of the nginx reload command because it was not working
proc = subprocess_run(["nginx", "-s", "reload"], stdin=DEVNULL, stderr=STDOUT)
# proc = run(
# ["/usr/sbin/nginx", "-s", "reload"],
# stdin=DEVNULL,
# stderr=PIPE,
# env=deepcopy(env),
# )
if proc.returncode == 0:
logger.info("Successfuly reloaded nginx")
else: