Invoice Software - Office 365 Or Purchase Software Suite?


  • Vendor

    @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    ERROR: In file './docker-compose.yml' service 'version' doesn't have any configuration options

    From searching online this error can sometimes be resolved by upgrading your version of docker-compose.

    https://github.com/docker/compose/issues/4053

    You can check which version you're using by running:

    docker-compose version


  • Service Provider

    @garak0410 is your Ubuntu up to date? Both did you install the latest Ubuntu which is 16.10 and have you done this to make sure that it is properly patched?

    sudo apt-get update
    sudo apt-get dist-upgrade


  • @scottalanmiller said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @garak0410 is your Ubuntu up to date? Both did you install the latest Ubuntu which is 16.10 and have you done this to make sure that it is properly patched?

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    Got this on the update attempt:

    sudo apt-get update
    [sudo] password for user:
    Hit:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
    Hit:2 http://us.archive.ubuntu.com/ubuntu xenial InRelease
    Hit:3 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease
    Hit:4 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease
    E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
    E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?





  • @garak0410
    That error usually means you have something open like Software Updater or something else needs to be closed.
    Just reboot, login open terminal(if using a gui) and then do your
    sudo apt-get update
    edit forgot this: sudo apt-get upgrade
    sudo apt-get dist-upgrade


  • Service Provider

    Do you have a GUI on this server?



  • @momurda said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @garak0410
    That error usually means you have something open like Software Updater or something else needs to be closed.
    Just reboot, login open terminal(if using a gui) and then do your
    sudo apt-get update
    edit forgot this: sudo apt-get upgrade
    sudo apt-get dist-upgrade

    Same errors as above...



  • @scottalanmiller said in Invoice Software - Office 365 Or Purchase Software Suite?:

    Do you have a GUI on this server?

    Yes...running latest Ubuntu DESKTOP version...



  • @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @scottalanmiller said in Invoice Software - Office 365 Or Purchase Software Suite?:

    Do you have a GUI on this server?

    Yes...running latest Ubuntu DESKTOP version...

    Why the "desktop" version?

    Linux has always been designed as a server first, and things removed for the desktop version. If you're using this to host applications, you really should use the "Server" version.



  • @garak0410 Start over with this ISO.



  • @DustinB3403 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @scottalanmiller said in Invoice Software - Office 365 Or Purchase Software Suite?:

    Do you have a GUI on this server?

    Yes...running latest Ubuntu DESKTOP version...

    Why the "desktop" version?

    Linux has always been designed as a server first, and things removed for the desktop version. If you're using this to host applications, you really should use the "Server" version.

    Just honest ignorance of Linux options...trying server now...



  • @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @DustinB3403 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @scottalanmiller said in Invoice Software - Office 365 Or Purchase Software Suite?:

    Do you have a GUI on this server?

    Yes...running latest Ubuntu DESKTOP version...

    Why the "desktop" version?

    Linux has always been designed as a server first, and things removed for the desktop version. If you're using this to host applications, you really should use the "Server" version.

    Just honest ignorance of Linux options...trying server now...

    I've set up Ubuntu Server...so, trying the install again... :)



  • @garak0410 You might want to take some time to look at @scottalanmiller's Learning Linux System Administration.



  • My 2 cents.. I have a client that manages basic inventory and invoicing for her business with Inflow. It is affordable and does exactly what I need it to do.

    https://www.inflowinventory.com/



  • @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @DustinB3403 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    @scottalanmiller said in Invoice Software - Office 365 Or Purchase Software Suite?:

    Do you have a GUI on this server?

    Yes...running latest Ubuntu DESKTOP version...

    Why the "desktop" version?

    Linux has always been designed as a server first, and things removed for the desktop version. If you're using this to host applications, you really should use the "Server" version.

    Just honest ignorance of Linux options...trying server now...

    I've set up Ubuntu Server...so, trying the install again... :)

    Ubuntu Server is set up...both of these commands worked this time:

    sudo apt-get update
    sudo apt-get dist-upgrade

    Still can't get the docker to work... on docker compose-up still get this:

    ERROR: In file './docker-compose.yml' service 'version' doesn't have any configuration options. All top level keys in your docker-compose.yml must map to a dictionary of configuration options.

    Here's my version information:

    docker-compose version 1.5.2, build unknown
    docker-py version: 1.8.0
    CPython version: 2.7.12+


  • Service Provider

    Haven't done tons with Docker. I'm not digging through the history here, but are you on the proper, current version of Ubuntu or are you on an older version? We know from another thread that if, at least in that case, using the old only partially supported LTS Ubuntu version instead of the current, fully supported version you get a Docker error like this. Make sure your on the current, fully supported version of Ubuntu.



  • @garak0410 Set up your Ubuntu Server 16.10 vm, and try my script to install Invoice Ninja with a self signed SSL certificate.

    It has been building properly in all of my tests, it seems to hang during the app db migration but just let it run. Also remember when creating the ssl cert, to set your FQDN or IP (which ever you chose at the beginning) in the COMMON NAME option.

    Get it with the following command or just copy paste the full script.

    wget  https://raw.githubusercontent.com/rodrigo-hissam/invoice-ninja-installer/master/ininja-installer.sh
    chmod +x ininja-installer.sh
    ./ininja-installer.sh
    

    FULL SCRIPT

    #!/bin/bash
    
    ############################################
    #	    Invoice Ninja Install Script   #
    #     Script Created by Rodrigo Moreno     #
    #    	 for https://mangolassi.it         #
    ############################################
    
    
    # Ensure running as root
    # composer should not be ran as root.
    #if [[ $ EUID -ne 0 ]]; then
    #  exec sudo "$0" "[email protected]"
    #fi
    # Variables and inital setup
    clear
    
    name="ininja"
    hostname="$(hostname)"
    fqdn="$(hostname)"
    tmp=/tmp/$name
    logfile=/var/log/invoice-ninja-install.log
    webdir=/var/www/html
    user=$USER
    app_key="$(< /dev/urandom tr -dc _A-Za-z-0-9 2>&1 | head -c32)"
    app_user=${name}'_user'
    
    spin[0]="-"
    spin[1]="\\"
    spin[2]="|"
    spin[3]="/"
    
    rm -rf ${tmp:?}
    mkdir $tmp
    
    
    cat << EOF
    
        ____                 _              _   ___         _          
       /  _/___ _   ______  (_)_______     / | / (_)___    (_)___ _    
       / // __ \ | / / __ \/ / ___/ _ \   /  |/ / / __ \  / / __  /    
     _/ // / / / |/ / /_/ / / /__/  __/  / /|  / / / / / / / /_/ /     
    /___/_/ /_/|___/\____/_/\___/\___/  /_/ |_/_/_/ /_/_/ /\__,_/      
                                                     /___/             
    
    EOF
    
    echo " Welcome to the Invoice Ninja Installer for Ubuntu 16.10!"
    echo ""
    echo ""
    
    
    #Getting your FQDN.
    echo -n "  Q. What is the FQDN of your server? ($fqdn): "
    read fqdn
    if [ -z "$fqdn" ]; then
            fqdn="$(hostname --fqdn)"
    fi
    echo "     Setting to $fqdn"
    echo ""
    
    # Set your own passwords, or generate random ones?
    until [[ $ans == "yes" ]] || [[ $ans == "no" ]]; do
    echo -n "  Q. Do you want me to automatically create the invoice ninja database user password? (y/n) "
    read setpw
    
    case $setpw in
            [yY] | [yY][Ee][Ss] )
                    mariadbuserpw="$(< /dev/urandom tr -dc _A-Za-z-0-9 2>&1 | head -c24)"
                    ans="yes"
                    ;;
            [nN] | [n|N][O|o] )
                    echo -n  "  Q. Insert your mariadb database user password:"
                    read -s mariadbuserpw
                    echo ""
    		ans="no"
                    ;;
            *) 	echo "  Invalid answer. Please type y or n"
                    ;;
    esac
    done
    
    echo ""
    echo  "* Making sure your Ubuntu install is updated (apt-get update)... ${spin[0]}"
    echo ""
    sudo apt-get update 
    
    echo""
    echo  " Upgrading your packages (apt-get upgrade)"
    echo ""
    sudo apt-get upgrade -y
    echo ""
    
    
    
    echo ""
    echo ""
    echo "* LEMP stack install and setup"
    echo "------------------------------"
    
    # NGINX
    echo ""
    echo "- Installing nginx " 
    echo ""
    sudo apt-get install nginx -y
    echo ""
    
    
    
    # MARIADB
    echo ""
    echo ""
    echo  "- Installing MariaDB "
    sudo apt-get install software-properties-common -y
    sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
    sudo add-apt-repository 'deb [arch=amd64,i386] http://mirror.jmu.edu/pub/mariadb/repo/10.1/ubuntu yakkety main'
    sudo apt-get update
    sudo apt-get install mariadb-server -y
    echo ""
    echo ""
    echo "- Hardening mariadb installation"
    mysql_secure_installation
    echo ""
    echo "Create the database for Invoice Ninja..."
    echo -n "Please enter your MARIADB root password: "
    read -s mariadbrootpw
    mysql -uroot -p${mariadbrootpw} -e "CREATE DATABASE ${name};"
    mysql -uroot -p${mariadbrootpw} -e "CREATE user ${name}[email protected] IDENTIFIED BY '${mariadbuserpw}';"
    mysql -uroot -p${mariadbrootpw} -e "GRANT ALL PRIVILEGES ON ${name}.* TO '${name}_user'@'localhost';"
    mysql -uroot -p${mariadbrootpw} -e "FLUSH PRIVILEGES;"
    
    
    
    #PHP and extras
    echo ""
    echo ""
    echo "- Installing and setting up PHP7.0 and its extensions "
    sudo apt-get install curl wget php7.0 php7.0-fpm php7.0-mysql php7.0-mcrypt php7.0-gd php7.0-curl php7.0-mbstring php7.0-zip php7.0-gmp php7.0-xml -y
    sudo sed -i.bak 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/7.0/fpm/php.ini
    sudo phpenmod -v 7.0 mcrypt
    sudo systemctl restart php7.0-fpm
    cd $tmp
    echo ""
    echo ""
    curl -sS https://getcomposer.org/installer | php
    sudo mv composer.phar /usr/local/bin/composer
     
    
    #Invoice Ninja
    echo ""
    echo  "- Installing git and cloning the Invoice Ninja repo "
    sudo apt-get install git
    git clone https://github.com/hillelcoren/invoice-ninja.git  $name 
    sudo mv $name $webdir
    sudo chown -R $user:$user $webdir/$name
    cd $webdir/$name
    
    
    #
    echo ""
    echo "---- Downloading Invoice Ninja Dependencies "
    composer install --no-dev -o
    
    # Setting env variables
    echo ""
    echo "- Setting up .env file"
    mv .env.example .env
    sudo sed -i.bak "s/DB_DATABASE=ninja/DB_DATABASE=${name}/g" .env
    sudo sed -i.bak "s/DB_USERNAME=ninja/DB_USERNAME=${app_user}/g" .env
    sudo sed -i.bak "s/DB_PASSWORD=ninja/DB_PASSWORD=${mariadbuserpw}/g" .env
    
    sudo sed -i.bak "s/APP_UR:L=http:\/\/ninja.dev/APP_URL=${fqdn}/g" .env
    
    # Running db migrations and seeding the db
    echo ""
    echo "- Running invoice ninja db migration, this will take a while"
    php artisan migrate
    php artisan db:seed
    
    php artisan key:generate
    
    
    # Creating a new PHP-FPM pool for our user
    echo ""
    echo "- Creating a new PHP-FPM pool"
    cat  > $tmp/$user.conf << EOF
    [$user]
    user = $user
    group = $user
    listen = /var/run/php/php7.0-fpm-$user.sock
    listen.owner = $user
    listen.group = www-data
    listen.mode = 0660
    pm = ondemand
    pm.max_children = 5
    pm.process_idle_timeout = 10s;  
    pm.max_requests = 200  
    chdir = /  
    EOF
    
    # Moving the pool conf and restarting the service
    sudo mv $tmp/$user.conf /etc/php/7.0/fpm/pool.d/
    sudo systemctl restart php7.0-fpm.service 
    
    echo ""
    echo "# Creating self signed certificate and nginx config"
    echo""
    # Create the SSL self sigend certificate
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
    # Diffie-Hellman group, used in negotiating Perfect Forward Secrecy with clients.
    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    
    cat > $tmp/ssl.conf << EOF
    server {
        listen 443 http2 ssl;
        listen [::]:443 http2 ssl;
    
        server_name $fqdn;
    
        ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
        ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
    
        ########################################################################
        # from https://cipherli.st/                                            #
        # and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html #
        ########################################################################
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
        ssl_ecdh_curve secp384r1;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 8.8.8.8 8.8.4.4 valid=300s;
        resolver_timeout 5s;
        # Disable preloading HSTS for now.  You can use the commented out header line that includes
        # the "preload" directive if you understand the implications.
        #add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
        add_header X-Frame-Options DENY;
        add_header X-Content-Type-Options nosniff;
    
        ##################################
        # END https://cipherli.st/ BLOCK #
        ##################################
    
        charset utf-8;
    
        root /var/www/html/$name/public;
    
        index index.html index.htm index.php;
    
        location / {
        	try_files \$uri \$uri/ /index.php?\$query_string;
        }
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }
    
        access_log  /var/log/nginx/ininja.access.log;
        error_log   /var/log/nginx/ininja.error.log;
    
        sendfile off;
    
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.0-fpm-$user.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
            fastcgi_intercept_errors off;
            fastcgi_buffer_size 16k;
            fastcgi_buffers 4 16k;
        }
    
        location ~ /\.ht {
            deny all;
        }
    }
    
    server {
            listen 80;
            server_name $fqdn;
            return  301 https://\$server_name\$request_uri;
    }
    EOF
    
    sudo mv $tmp/ssl.conf /etc/nginx/conf.d/
    
    sudo systemctl restart php7.0-fpm.service 
    sudo systemctl restart nginx.service
    
    echo "ALL DONE!!! Point your web browser to ${fqdn} and complete the setup"
    

    After running the script, just pointed my browser to my servers ip (192.168.2.26) and voila you can now finish the setup.
    alt text


  • Vendor

    @Romo That's awesome!!!

    There are close to 100 migrations which explains why it takes so long, we're looking into enable use of a single SQL file when first installing to improve the performance.



  • Quick update...I've had zero time to devote to this because Accountant needed an ancient VB6 program enhanced and took me 1/2 of last week to do this. And this week, another manager wants me to convert an Excel Sheet to a web-based database. Office manager still demands an invoice program in 2 weeks and wants that "legacy" former IT guy to be involved...she ignored my pleas for help and friendly reminders that what she wants can't be done at my work load/skill level and the fact they don't want to pay a developer. Not counting the day to day (our VOiP system needed some work, a few PC rebuilds and phone replacements)...

    And this point, it would be easier for me if I could run this Invoice Ninja (self-hosted) on my Windows Server 2012 R2 Applications/Web Server but even had struggles getting that going...


  • Service Provider

    @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    And this point, it would be easier for me if I could run this Invoice Ninja (self-hosted) on my Windows Server 2012 R2 Applications/Web Server but even had struggles getting that going...

    That's because the thing that is hard here is Invoice Ninja, not Linux. A normal app on Linux can be as little as one line to install. I wonder what IN is using that is making it so hard.


  • Service Provider

    @garak0410 said in Invoice Software - Office 365 Or Purchase Software Suite?:

    And this point, it would be easier for me if I could run this Invoice Ninja (self-hosted) on my Windows Server 2012 R2 Applications/Web Server but even had struggles getting that going...

    Did you try @Romo's installer for it? Should make Ubuntu 16.10 the easiest option since it is known to work already. PHP, MariaDB and all of that on Windows is quite a pain, in general.


Log in to reply
 

Looks like your connection to MangoLassi was lost, please wait while we try to reconnect.