mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
allow to set email and password as lxc-install.sh parameter
This commit is contained in:
parent
1f1a23d19f
commit
cd3e8f7f8a
@ -6,39 +6,96 @@
|
||||
# Will set-up paperless, apache2 and proftpd
|
||||
#
|
||||
# lxc launch ubuntu: paperless
|
||||
# lxc exec paperless -- sh -c "wget https://raw.githubusercontent.com/maur/paperless/master/docs/examples/lxc/lxc-install.sh && /bin/bash lxc-install.sh"
|
||||
# lxc exec paperless -- sh -c "sudo apt-get update && sudo apt-get install -y wget"
|
||||
# lxc exec paperless -- sh -c "wget https://raw.githubusercontent.com/maur/paperless/master/docs/examples/lxc/lxc-install.sh && /bin/bash lxc-install.sh --email "
|
||||
#
|
||||
#
|
||||
set +e
|
||||
PASSWORD=$(< /dev/urandom tr -dc _A-Z-a-z-0-9+@%^{} | head -c20;echo;)
|
||||
EMAIL=
|
||||
|
||||
# Add paperless user with no password
|
||||
adduser --disabled-password --gecos "" paperless
|
||||
# Add ftpupload
|
||||
adduser --disabled-password --gecos "" ftpupload
|
||||
echo "Set ftpupload password: "
|
||||
passwd ftpupload
|
||||
# Allow paperless group to access
|
||||
adduser paperless ftpupload
|
||||
chmod g+w /home/ftpupload
|
||||
function displayHelp() {
|
||||
echo "available parameters:
|
||||
-e <email> | --email <email>
|
||||
-p <password> | --password <password>
|
||||
"
|
||||
}
|
||||
|
||||
POSITIONAL=()
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
key="$1"
|
||||
i=$key
|
||||
|
||||
case $i in
|
||||
-e|--email)
|
||||
EMAIL="${2}"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-p|--password)
|
||||
PASSWORD="${2}"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--default|-h|--help)
|
||||
shift
|
||||
displayHelp
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "argument: $i not recognized"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
set -- "${POSITIONAL[@]}" # restore positional parameters
|
||||
|
||||
if [ -z $EMAIL ]; then
|
||||
echo "missing email, try running with -h "
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [ $(grep -c paperless /etc/passwd) -eq 0 ]; then
|
||||
# Add paperless user with no password
|
||||
adduser --disabled-password --gecos "" paperless
|
||||
fi
|
||||
|
||||
if [ $(grep -c ftpupload /etc/passwd) -eq 0 ]; then
|
||||
# Add ftpupload
|
||||
adduser --disabled-password --gecos "" ftpupload
|
||||
echo "Set ftpupload password: "
|
||||
#passwd ftpupload
|
||||
#TODO: generate some password and allow parameter
|
||||
echo "ftpupload:ftpuploadpassword" | chpasswd
|
||||
fi
|
||||
|
||||
if [ $(id -nG paperless | grep -Fcw ftpupload) -eq 0 ]; then
|
||||
# Allow paperless group to access
|
||||
adduser paperless ftpupload
|
||||
chmod g+w /home/ftpupload
|
||||
fi
|
||||
|
||||
# Get apt up to date
|
||||
apt-get update
|
||||
|
||||
# Needed for plain Paperless
|
||||
apt-get -y install unpaper gnupg libpoppler-cpp-dev python3-pyocr tesseract-ocr imagemagick optipng
|
||||
apt-get -y install unpaper gnupg libpoppler-cpp-dev python3-pyocr tesseract-ocr imagemagick optipng git
|
||||
|
||||
# Needed for Apache
|
||||
apt-get -y install apache2 libapache2-mod-wsgi-py3
|
||||
|
||||
# Install ftp server and make sure all uplaoded files are owned by paperless
|
||||
apt-get -y install proftpd
|
||||
cat <<EOF >> /etc/proftpd/proftpd.conf
|
||||
<Directory /home/ftpupload/>
|
||||
UserOwner paperless
|
||||
GroupOwner paperless
|
||||
</Directory>
|
||||
if [ ! -f /etc/proftpd/proftpd.conf -o $(grep -c paperless /etc/proftpd/proftpd.conf) -eq 0 ]; then
|
||||
# Install ftp server and make sure all uplaoded files are owned by paperless
|
||||
apt-get -y install proftpd
|
||||
cat <<EOF >> /etc/proftpd/proftpd.conf
|
||||
<Directory /home/ftpupload/>
|
||||
UserOwner paperless
|
||||
GroupOwner paperless
|
||||
</Directory>
|
||||
EOF
|
||||
systemctl restart proftpd
|
||||
|
||||
systemctl restart proftpd
|
||||
fi
|
||||
|
||||
#Get Paperless from git
|
||||
su -c "cd /home/paperless ; git clone https://github.com/maur/paperless" paperless
|
||||
@ -58,16 +115,23 @@ sed -i "s/#PAPERLESS_SECRET_KEY.*/PAPERLESS_SECRET_KEY=$SECRET/" /etc/paperless
|
||||
|
||||
#Initialise the SQLite database
|
||||
su -c "cd /home/paperless/paperless/src/ ; ./manage.py migrate" paperless
|
||||
echo "if superuser doesn't exists, create one with login: paperless and password: ${PASSWORD}"
|
||||
#Create a user for your Paperless instance
|
||||
su -c "cd /home/paperless/paperless/src/ ; ./manage.py createsuperuser" paperless
|
||||
# 167 static files copied to '/home/paperless/paperless/static'.
|
||||
su -c "cd /home/paperless/paperless/src/ ; ./manage.py collectstatic" paperless
|
||||
su -c "cd /home/paperless/paperless/src/ ; echo ./manage.py create_superuser_with_password --username paperless --email ${EMAIL} --password ${PASSWORD} --preserve" paperless
|
||||
su -c "cd /home/paperless/paperless/src/ ; ./manage.py create_superuser_with_password --username paperless --email ${EMAIL} --password ${PASSWORD} --preserve" paperless
|
||||
|
||||
# Set-up apache
|
||||
cp /home/paperless/paperless/docs/examples/lxc/paperless.conf /etc/apache2/sites-available/
|
||||
a2dissite 000-default.conf
|
||||
a2ensite paperless.conf
|
||||
systemctl reload apache2
|
||||
if [ ! -d /home/paperless/paperless/static ]; then
|
||||
# 167 static files copied to '/home/paperless/paperless/static'.
|
||||
su -c "cd /home/paperless/paperless/src/ ; ./manage.py collectstatic" paperless
|
||||
fi
|
||||
|
||||
if [ ! -f /etc/apache2/sites-available/paperless.conf ]; then
|
||||
# Set-up apache
|
||||
cp /home/paperless/paperless/docs/examples/lxc/paperless.conf /etc/apache2/sites-available/
|
||||
a2dissite 000-default.conf
|
||||
a2ensite paperless.conf
|
||||
systemctl reload apache2
|
||||
fi
|
||||
|
||||
sed -e "s:home/paperless/project/virtualenv/bin/python:usr/bin/python3:" \
|
||||
/home/paperless/paperless/scripts/paperless-consumer.service \
|
||||
@ -83,4 +147,6 @@ systemctl start paperless-consumer
|
||||
# convert-im6.q16: not authorized
|
||||
# Security risk ?
|
||||
# https://stackoverflow.com/questions/42928765/convertnot-authorized-aaaa-error-constitute-c-readimage-453
|
||||
mv /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xmlout
|
||||
if [ -f /etc/ImageMagick-6/policy.xml ]; then
|
||||
mv /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xmlout
|
||||
fi
|
||||
|
38
management/commands/create_superuser_with_password.py
Normal file
38
management/commands/create_superuser_with_password.py
Normal file
@ -0,0 +1,38 @@
|
||||
from django.contrib.auth.management.commands import createsuperuser
|
||||
from django.core.management import CommandError
|
||||
|
||||
|
||||
class Command(createsuperuser.Command):
|
||||
help = 'Crate a superuser, and allow password to be provided'
|
||||
|
||||
def add_arguments(self, parser):
|
||||
super(Command, self).add_arguments(parser)
|
||||
parser.add_argument(
|
||||
'--password', dest='password', default=None,
|
||||
help='Specifies the password for the superuser.',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--preserve', dest='preserve', default=False, action='store_true',
|
||||
help='Exit normally if the user already exists.',
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
password = options.get('password')
|
||||
username = options.get('username')
|
||||
database = options.get('database')
|
||||
|
||||
if password and not username:
|
||||
raise CommandError("--username is required if specifying --password")
|
||||
|
||||
if username and options.get('preserve'):
|
||||
exists = self.UserModel._default_manager.db_manager(database).filter(username=username).exists()
|
||||
if exists:
|
||||
self.stdout.write("User exists, exiting normally due to --preserve")
|
||||
return
|
||||
|
||||
super(Command, self).handle(*args, **options)
|
||||
|
||||
if password:
|
||||
user = self.UserModel._default_manager.db_manager(database).get(username=username)
|
||||
user.set_password(password)
|
||||
user.save()
|
Loading…
x
Reference in New Issue
Block a user