secure env
This commit is contained in:
@@ -53,6 +53,8 @@ WORKDIR /app
|
|||||||
|
|
||||||
RUN apk add --no-cache sqlite-dev libpq-dev mariadb-dev vips-dev yaml-dev redis libheif vips-heif gcompat ttf-freefont && mkdir /fonts && rm /usr/share/fonts/freefont/FreeSans.otf
|
RUN apk add --no-cache sqlite-dev libpq-dev mariadb-dev vips-dev yaml-dev redis libheif vips-heif gcompat ttf-freefont && mkdir /fonts && rm /usr/share/fonts/freefont/FreeSans.otf
|
||||||
|
|
||||||
|
RUN addgroup -g 2000 docuseal && adduser -u 2000 -G docuseal -s /bin/sh -D -h /home/docuseal docuseal
|
||||||
|
|
||||||
RUN echo $'.include = /etc/ssl/openssl.cnf\n\
|
RUN echo $'.include = /etc/ssl/openssl.cnf\n\
|
||||||
\n\
|
\n\
|
||||||
[provider_sect]\n\
|
[provider_sect]\n\
|
||||||
@@ -92,7 +94,10 @@ COPY --from=webpack /app/public/packs ./public/packs
|
|||||||
RUN ln -s /fonts /app/public/fonts
|
RUN ln -s /fonts /app/public/fonts
|
||||||
RUN bundle exec bootsnap precompile -j 1 --gemfile app/ lib/
|
RUN bundle exec bootsnap precompile -j 1 --gemfile app/ lib/
|
||||||
|
|
||||||
|
RUN chown -R docuseal:docuseal /app
|
||||||
|
|
||||||
WORKDIR /data/docuseal
|
WORKDIR /data/docuseal
|
||||||
|
ENV HOME=/home/docuseal
|
||||||
ENV WORKDIR=/data/docuseal
|
ENV WORKDIR=/data/docuseal
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|||||||
@@ -1,6 +1,20 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
if ENV['RAILS_ENV'] == 'production'
|
if ENV['RAILS_ENV'] == 'production'
|
||||||
|
if Process.uid.zero?
|
||||||
|
begin
|
||||||
|
workdir = ENV.fetch('WORKDIR', '.')
|
||||||
|
|
||||||
|
if File.exist?(workdir) && File.stat(workdir).uid != 2000
|
||||||
|
puts 'Changing the owner of the docuseal directory...' unless Dir.empty?(workdir)
|
||||||
|
|
||||||
|
FileUtils.chown_R(2000, 2000, workdir)
|
||||||
|
end
|
||||||
|
rescue StandardError
|
||||||
|
puts 'Unable to change docuseal directory owner'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if !ENV['AWS_SECRET_MANAGER_ID'].to_s.empty?
|
if !ENV['AWS_SECRET_MANAGER_ID'].to_s.empty?
|
||||||
require 'aws-sdk-secretsmanager'
|
require 'aws-sdk-secretsmanager'
|
||||||
|
|
||||||
@@ -30,12 +44,30 @@ if ENV['RAILS_ENV'] == 'production'
|
|||||||
File.write(dotenv_path, default_env)
|
File.write(dotenv_path, default_env)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if Process.uid.zero?
|
||||||
|
begin
|
||||||
|
File.chown(0, 0, dotenv_path)
|
||||||
|
File.chmod(0o600, dotenv_path)
|
||||||
|
rescue StandardError
|
||||||
|
puts 'Unable to set dotenv mod'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
database_url = ENV.fetch('DATABASE_URL', nil)
|
database_url = ENV.fetch('DATABASE_URL', nil)
|
||||||
|
|
||||||
Dotenv.load(dotenv_path)
|
Dotenv.load(dotenv_path)
|
||||||
|
|
||||||
ENV['DATABASE_URL'] = ENV['DATABASE_URL'].to_s.empty? ? database_url : ENV.fetch('DATABASE_URL', nil)
|
ENV['DATABASE_URL'] = ENV['DATABASE_URL'].to_s.empty? ? database_url : ENV.fetch('DATABASE_URL', nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
unless Process.uid == 2000
|
||||||
|
begin
|
||||||
|
Process::Sys.setgid(2000)
|
||||||
|
Process::Sys.setuid(2000)
|
||||||
|
rescue StandardError
|
||||||
|
puts 'Unable to run as 2000:2000'
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if ENV['DATABASE_URL'].to_s.split('@').last.to_s.split('/').first.to_s.include?('_')
|
if ENV['DATABASE_URL'].to_s.split('@').last.to_s.split('/').first.to_s.include?('_')
|
||||||
|
|||||||
Reference in New Issue
Block a user