All posts by dale

Dual-boot Centos 7 with existing Windows

I didn’t have any trouble installing Centos 7 to an unused 100G on my T-61 ThinkPad. However, Windows wasn’t listed in the boot menu (only Linux and Linux-recover).

This solution is from johnsfine, I’m summarizing for my own reference.

And fwiw, Centos 7 feels sluggish compared to Linux Mint 17.

Summary

After installing Centos 7, sda1 remained the bootable Windows partition and was untouched. However, it seems Centos7 does not support the ntfs file system out of the box. This means at the end of the install, when grub2 probed the drive to build the boot menu, the Windows partition was undetected and therefore wasn’t added to the boot menu. This procedure solves that.

After adding Windows to the boot menu, the default boot is still Centos 7. I would like to change the default boot to Windows, but it seems complicated. Maybe someday…

Procedure

Enable the EPEL repository (directory and filename current as of this writing)

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
yum install ./epel-release-7-2.noarch.rpm

Install ntfs-3g

sudo yum install ntfs-3g

Re-configure Grub2

grub2-mkconfig -o /boot/grub2/grub.cfg

Install ERPNext on bare metal Ubuntu

This post is essentially the same post as Install ERPNext on bare metal Centos 7, but with Ubuntu 64b 14.04.1-server. I ran into a snag installing ERPNext on Centos. I now understand there are subtle differences between the Centos 7 system on my DigitalOcean Droplet, and the fresh Centos 7 install I did on a bare metal box from the Everything-DVD iso. For someone unknown reason, ERPNext isn’t serving pages, but the server does seem to be up and running. However, in the interests of moving on, I’m switching to Ubuntu, which is also supported by setup_frappe.sh.

Update: ERPNext installed correctly, I didn’t do much testing, just browsed to login page and around.

I’m starting with a Dell Optiplex 755 and Centos 7 Everything-DVD.

  • Boot into the MEBx BIOS (Ctrl-P instead of F2) and disable Intel ANT ME BIOS Extension (that doesn’t play nice). ThinkWiki has a good article, and besides knowing the default password to get in (admin), you MUST change the password – and it MUST be a strong password
  • install Ubuntu from ubuntu-14.04.1-server-amd64.iso
    • server name (whizzer.local), timezone, and first user
    • disk partitioning – select Guided – use entire disk and set up LVM
    • no automatic updates – automatic updates could be distracting, and it can probably be figured out later
    • collections: OpenSSH server, Mail server, Samba file server
      • mail server configuration type: Local only (The only delivered mail is the mail for local users. There is no network.).
        • Other options: 1) Internet site (mail is sent and received directly using SMTP), 2) Internet with smarthost (mail is received directly using SMTP or by running a utility such as fetchmail. Outgoing mail is sent using a smarthost.), and 3) Satellite system (All mail is sent to another machine, called a ‘smarthost’ for delivery.). I don’t think this will handle having virtual users (instead of system users with system accounts).
      • Postfix Configuration: System mail name: whizzer.local All mail addresses default to here if a host isn’t specified.
      • Create SSL certificate (name: localhost)
  • Reboot!
  • Fix “no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory”
    • http://ubuntuforums.org/showthread.php?t=2214042
  • connect using WinSCP and copy public ssh key to /root/.ssh/, also copy authorized_hosts and id_rsa (openssh), and reboot (don’t know how to stop/start ssh on Ubuntu either).
  • follow Easy Way in ERPNExt frappe bench README.md
  • point browser at the server ip address
    • server produced ERPNext login screen, so it seems the basics are working.
  • Access the server from a browser (port 80), and sign into ERPNext as “Adminstrator” using the password output at the end of the setup_frappe.sh execution.
  • Backup the database after completing the setup wizard.

Compared to Centos, wkhtmltopdf installed correctly, and did not have to be manually installed afterwards.

setup_frappe.sh log

dale@hotstuff:~$ wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
--2014-11-20 03:49:46--  https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 23.235.47.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|23.235.47.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11561 (11K) [text/plain]
Saving to: ‘setup_frappe.sh’

100%[===============================================================================================>] 11,561      --.-K/s   in 0s

2014-11-20 03:49:47 (61.5 MB/s) - ‘setup_frappe.sh’ saved [11561/11561]

dale@hotstuff:~$ sudo bash setup_frappe.sh --setup-production
[sudo] password for dale:
Installing for Ubuntu trusty amd64
In case you encounter an error, you can post on https://discuss.frappe.io

Adding debian mariadb repo
Installing packages for Ubuntu. This might take time...
Installing wkhtmltopdf
Adding frappe user
setup_frappe.sh: line 300: hash: pip-2.7: not found
setup_frappe.sh: line 302: hash: pip2.7: not found
Installing frappe-bench
Setting up first site

Frappe/ERPNext is installed successfully and is running on port 80.
Frappe password: xxxxx
MariaDB root password: xxxxx
Administrator password: xxxxx

The passwords are also stored at ~/frappe_passwords.txt
You can remove this file after making a note of the passwords.
dale@hotstuff:~$ 

Backup database

Maybe…

systemctl status mariadb.service
mysqldump -u root -p --databases site1.local > ~/erpnextbkup/erpnext-1.sql

Restore database

Maybe…

mysql -u root -p site1.local < ~/erpnextbkup/erpnext-1.sql

ERPNext Communication

A long time ago (many cycles), I proposed to the ERPNext founders that an open source project needs to consider the world outside of their project, and decide what rights they are going to control for the good of the project – the license for the source code, copyright ownership of the source code (perhaps documentation separately), and trademark control over the name and logo.

I really commend the ERPNext team for their professionalism and being up front and clear about the rights. This post is also an excuse to try cloud code snippet and picture hosting, which are preferred ways to share when posting to the ERPNext message board.

All very cool, and I really like the message board.

Also, I found out Greenshot, an open-source screenshot application for Windows, will send directly to imgr. Very cool, but I don’t understand how providing this anonymous service benefits imgur, maybe the images will be gone in 24 hours. I’ll check back tomorrow.

ERPNExt README.md file from Github

Install ERPNext on bare metal Centos 7

This is essentially the same post as Install ERPNext on Digital Ocean Centos 7, but updated for a bare metal server.

Here are my steps, described very briefly again. I’m starting with a Dell Optiplex 755 and Centos 7 Everything-DVD.

  • Boot into the MEBx BIOS (Ctrl-P instead of F2) and disable Intel ANT ME BIOS Extension (that doesn’t play nice). ThinkWiki has a good article, and besides knowing the default password to get in (admin), you MUST change the password – and it MUST be a strong password
  • install Centos from the “Everything-DVD”

    • use “Infrastructure Server” profile with add-ons: E-mail server, and File and Storage Server (CIFS…)
    • enable networking and enter the hostname (e.g. whizzer.local)
    • set root password (no user creation is needed)
  • Disable firewalld to allow remote clients to connect to the server (otherwise you will need to create a firewall rule.

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

  • Disable SELinux to allow Nginx to respond to remote client requests (otherwise you will need to create SELinux rule) *ERPNext should be updated shortly and any necessary SELinux rules created during install).

    vi /etc/selinux/config

set SELINUX=disabled

  • connect using WinSCP and copy public ssh key to /root/.ssh/, also copy authorized_hosts and id_rsa (openssh), and reboot (don’t know how to stop/start ssh on Centos yet).
  • update system

    yum check update yum update

  • follow Easy Way in ERPNExt frappe bench README.md

    • wkhtmltopdf couldn’t be installed and was skipped (too bad, I need that!)
    • “pip-2.7 not found”, but now sure this is only informational and not an issue
  • point browser at the server ip address
    • server produced ERPNext login screen, so it seems the basics are working.
  • install wkhtmltopdf manually (appears the project has changed its hosting recently)
    • got a LOT of “unable to allocate memory” error messages, but wkhtmltopdf seems OK (created test page, assuming errors are due to not being able to load some user thumbnail pics)
  • Access the server from a browser (port 80), and sign into ERPNext as “Adminstrator” using the password output at the end of the setup_frappe.sh execution.
  • Backup the database after completing the setup wizard.

setup_frappe.sh log

[root@whizzer ~]# wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
--2014-11-22 01:30:19--  https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 23.235.47.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|23.235.47.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11561 (11K) [text/plain]
Saving to: ‘setup_frappe.sh’

100%[=========================================================================>] 11,561      --.-K/s   in 0.1s

2014-11-22 01:30:20 (77.8 KB/s) - ‘setup_frappe.sh.1’ saved [11561/11561]

[root@whizzer ~]# sudo bash setup_frappe.sh --setup-production
Installing for centos 7 amd64
In case you encounter an error, you can post on https://discuss.frappe.io

Adding centos mariadb repo
Installing packages for centos. This might take time...
Installing wkhtmltopdf
Cannot install wkhtmltodpdf. Skipping...
Configuring CentOS services
Starting services
Adding frappe user
setup_frappe.sh: line 300: hash: pip-2.7: not found
Installing frappe-bench
Setting up first site

Frappe/ERPNext is installed successfully and is running on port 80.
Frappe password: xxxxx
MariaDB root password: xxxxx
Administrator password: xxxxx

The passwords are also stored at ~/frappe_passwords.txt
You can remove this file after making a note of the passwords.
[root@whizzer ~]#

install wkhtmltopdf

Stay tuned.

Backup database

systemctl status mariadb.service
mysqldump -u root -p --databases site1.local > ~/erpnextbkup/erpnext-1.sql

Restore database

mysql -u root -p site1.local < ~/erpnextbkup/erpnext-1.sql

Configuring ERPNext for Maestro

Carrying on from my previous post., you may recall that I’ve connected to my new server for the first time with my web browser, logged in as Administrator, and now the Setup Wizard is walking me through the setup procedure.

  • english
  • initial administrator user (I’ll use me for now, but will be either Tom, Ned or Mary)
  • country, timezone and currency
    • Country: United States
    • Default Currency: USD
    • Time Zone: America/New_York
  • Organization
    • Company: Swift Construction Co.
    • Company Abbreviation: SCC
    • Financial Year Start Date: 01-01-2014
    • Financial Year End Date: 12-31-2014
    • What does it do? Excellence in Innovation
  • Letter and Logo images
  • Taxes
    • Created one Tax 1 just in case having one is assumed later.
  • Customers
  • Suppliers
    • Added Trilogy-Net, to whom the SCC has contracted assembly of the Aircraft Wireless circuit board)
  • Products and Services
    • Added PN 20000003 (“PCA,AIRCRAFT WIRELESS”), which is sold and purchased as described (Group: Products, UOM: Unit)
  • Backup the database again (using cli, see previous post)

This seems to be enough to get things going. I need to import all the SCC parts next.

Install ERPNext on DigitalOcean Centos 7

For followers of this saga, I started trying to install ERPNext on bare-metal FreeBSD, but ran into errors. No solution yet, so changing course slightly. I signed up for a server on DigitalOcean. It’s a pretty good deal, for $5 a month for one CPU, 512MB RAM and a 20 GB SSD. It’s basically the same as the old desktop serving dalescott.net, or the performance of a vm running in VirtualBox under Windows on my T61 ThinkPad. I also had a $10 promo code; I still had to put in $5 of my own, but I should get 3 months for $5, pretty good. I had to pick CentOS 7 instead of FreeBSD 10 (ERPNext and DigitalOcean constraints, and chosing RH for corporate familiarity), oh well….

Here are my steps, described very briefly:

  • copy my public ssh key to my DigitalOcean account (copy/paste from the PuTTYgen window, NOT the Save Public Key button!)
  • create droplet: 512 MB / 1 CPU, 20 GB SSD, 1000 GB Transfer, New York server, CentOS 7.0 x64, and use my ssh key.
  • connect to the new server using PuTTY on my Windows laptop
    • I was emailed a password, but it doesn’t seem to work, I muddled around a bit and destroyed my first droplet, so perhaps the password is for that droplet – if the second droplet got the same IP address as the destroyed one)
  • follow Easy Way in ERPNExt frappe bench README.md
    • wkhtmltopdf couldn’t be installed and was skipped (too bad, I need that!)
    • “pip-2.7 not found”, but reading setup_frappe.sh, this seems informational and not an issue
  • point browser at the server ip address
    • server produced ERPNext login screen, so it seems the basics are working.
  • install wkhtmltopdf manually (appears the project has changed its hosting recently)
    • got a LOT of “unable to allocate memory” error messages, but wkhtmltopdf seems OK (created test page, assuming errors are due to not being able to load some user thumbnail pics)
  • Access the server from a browser (port 80), and sign into ERPNext as “Adminstrator” using the password output at the end of the setup_frappe.sh execution.
  • Backup the database after completing the setup wizard.

setup_frappe.sh log

[root@firefly ~]# wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
--2014-11-14 22:57:47-- https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.27.76.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.27.76.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11601 (11K) [text/plain]
Saving to: ‘setup_frappe.sh’

100%[============================================================>] 11,601 --.-K/s in 0s

2014-11-14 22:57:47 (37.0 MB/s) - ‘setup_frappe.sh’ saved [11601/11601]

[root@firefly ~]# sudo bash setup_frappe.sh --setup-production
Installing for centos 7 amd64 In case you encounter an error, you can post on https://discuss.frappe.io

Adding centos mariadb repo
Installing packages for centos. This might take time...
Installing wkhtmltopdf
Cannot install wkhtmltodpdf. Skipping...
Configuring CentOS services
Starting services
Adding frappe user
setup_frappe.sh: line 300: hash: pip-2.7: not found
Installing frappe-bench Setting up first site

Frappe/ERPNext is installed successfully and is running on port 80.
Frappe password: xxxxxxxxxxxxxxxx
MariaDB root password: xxxxxxxxxxxxxxxx
Administrator password: xxxxxxxxxxxxxxxx

The passwords are also stored at ~/frappe_passwords.txt
You can remove this file after making a note of the passwords. 
[root@firefly ~]#

install wkhtmltopdf

[root@firefly ~]# wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-centos7-amd64.rpm
--2014-11-14 23:30:03--  http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-centos7-amd64.rpm
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59
Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://softlayer-dal.dl.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-centos7-amd64.rpm [following]
--2014-11-14 23:30:03--  http://softlayer-dal.dl.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-centos7-amd64.rpm
Resolving softlayer-dal.dl.sourceforge.net (softlayer-dal.dl.sourceforge.net)... 67.228.157.232
Connecting to softlayer-dal.dl.sourceforge.net (softlayer-dal.dl.sourceforge.net)|67.228.157.232|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14258268 (14M) [application/octet-stream]
Saving to: ‘wkhtmltox-0.12.1_linux-centos7-amd64.rpm’

100%[=============================================================================================================>] 14,258,268  5.16MB/s   in 2.6s

2014-11-14 23:30:06 (5.16 MB/s) - ‘wkhtmltox-0.12.1_linux-centos7-amd64.rpm’ saved [14258268/14258268]

[root@firefly ~]#
[root@firefly ~]# rpm -ivh wkhtmltox-0.12.1_linux-centos7-amd64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:wkhtmltox-1:0.12.1-1             ################################# [100%]
[root@firefly ~]# yum install fontconfig libXrender libXext '*fonts*' openssl
...
  Lots and LOTS of fonts appear to be installed, but at the end there are a LOT of "[Errno 5] [Errno 12] Cannot allocate memory"
[root@firefly ~]# wkhtmltopdf --version
wkhtmltopdf 0.12.1 (with patched qt)
[root@firefly ~]# wkhtmltopdf http://www.tecmint.com/install-eclipse-classic-in-rhel-centos-fedora/ ./install-eclipse.pdf
Loading pages (1/6)
Warning: A finished ResourceObject received a loading finished signal. This migth be an indication of an iframe taking to long to load.
Warning: A finished ResourceObject received a loading progress signal. This migth be an indication of an iframe taking to long to load.
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
Exit with code 1 due to network error: UnknownNetworkError
[root@firefly ~]#

Backup database

systemctl status mariadb.service
mysqldump -u root -p --databases site1.local > ~/erpnextbkup/erpnext-1.sql

Restore database

mysql -u root -p site1.local < ~/erpnextbkup/erpnext-1.sql

Install ERPNext on FreeBSD

(See Update )

If you have arrived here from the ERPNext page on Wikipedia, this is a stub while I try to install the latest version of ERPNext on FreeBSD 10-RELEASE.

I started writing an article on installing ERPNext on FreeBSD a while ago (maybe a year ago?), but the installation and article stalled, and the article eventually disappeared when I stopped using MediaWiki on my server (after migrating the Maestro wiki with SCC QSM to GitHub). I liked ERPNext a lot, but work stalled for two reasons:

  • I couldn’t figure out how to host on FreeBSD.
  • I couldn’t figure out how to use serialized stock.
  • I didn’t like that login IDs were email addresses (mostly because I hadn’t configured a mail server at the time, and didn’t see how I could demonstrate workflows with emails otherwise).

Since then, I have spent time experimenting with another popular open-source Python-based ERP, and then more with a fork of that ERP from an earlier era before it became primarily web-based. However, my progress towards creating a working proof-of-concept hasn’t proceeded as quickly as I had hoped. Also, every 6 months or so I like to revisit my favorite applications and spend a day or two to install, test, review documentation, etc., which brings me back to ERPNext – it’s time for a check-up.

So far it appears the documentation has greatly improved. I like the Guidebooks, giving workflow examples for engineer-to-order, make-to-order, and make-to-stock processes). Also system installation documentation seems improved. So far, it looks as though I might be able to follow what’s happening and adapt for FreeBSD.

My critical use case is:

  • Receive serialized stock items
  • Serialize certain un-serialized stock when received (serialized with either vendor or local serial number)
  • Produce (manufacture) serialized stock (sub-assemblies and final assemblies) using serialized and un-serialized stock
  • Un-produce serialized final assembly stock to sub-assemblies, and return sub-assemblies to inventory using an inspection and test process.
  • Maintain accurate historical hierarchical models for assemblies over time (with real-time querying)

Please wish me luck. Hopefully all goes well and I can finish this HowTo. Any guidance you may have would be sincerely appreciated (use the Comment form, or post to the ERPNext forum))

Update

Ran into trouble…., frappe-bench is giving an error and I don’t know what to do about it. I’ll post to ERPNExt list, but this is now several weeks later and I can’t remember if I posted or not. I was following the Easy way Installation procedure as a guide. I individually installed the pre-requisites and also ERPNext, but then ran into trouble installing a new bench (btw, I don’t really know what “installing a new bench” means).

$ bench init frappe-bench
Already using interpreter /usr/local/bin/python2.7
Cloning into 'frappe'...
remote: Counting objects: 61698, done.
remote: Compressing objects: 100% (118/118), done.
remote: Total 61698 (delta 76), reused 26 (delta 17)
Receiving objects: 100% (61698/61698), 25.65 MiB | 1.32 MiB/s, done.
Resolving deltas: 100% (43682/43682), done.
Checking connectivity... done.
installing frappe
Compiling /usr/home/erpnext/frappe-bench/env/build/gunicorn/gunicorn/workers/_gaiohttp.py ...
   File "/usr/home/erpnext/frappe-bench/env/build/gunicorn/gunicorn/workers/_gaiohttp.py", line 64
    yield from self.wsgi.close()
             ^
SyntaxError: invalid syntax

Maestro Update

SCC Maestro now consists of:

  • Maestro Desktop (WordPress, WP LDAP Simple Login)
  • Maestro Mail (SquirrelMail, Postfix, Dovecot)
  • Maestro Users (OpenLDAP, phpLdapAdmin)
  • Maestro Issues (MantisBT)
  • Maestro Parts, Manufacturing and Material (Tryton)

Significant advancements include Maestro Desktop, a launching point for Maestro components, a webmail client for Maestro Mail, and an IMAP mail interface to Maestro Mail for enterprise users to bring Maestro Mail into their own system.

Upcoming advancements include Maestro Documents, a new document management component, integrated with Maestro Desktop.

A VirtualBox virtual appliance will be available shortly. Use the contact form to receive additional information.

Maestro Update

SCC Maestro system now consists of the following integrated components:

  • Maestro Mail (Postfix, Mutt)
  • Maestro Users (OpenLDAP, phpLdapAdmin)
  • Maestro Issues (MantisBT)
  • Maestro Parts, Manufacturing and Material (Tryton)

Integration consists of single-point maintenance of user master data (authentication and email address) in an LDAP server, integrated with Issue Management and Material Management for user authentication.

The LDAP server (OpenLDAP) holds user names, login ids, and email addresses. Issue management (MantisBT) and material management (Tryton) authenticate users against through OpenLDAP. If LDAP authentication fails (the user id is not known or the provided password is not authenticated), Tryton falls back to local authentication (Mantis has no fall back). Email notices from MantisBT and Tryton are sent and received internally via Maestro Mail, and can be read – and also sent – using the Mutt mail client.

The next integration milestone will bring signicant mail improvements. A web-mail client will be provided for reading Maestro Mail, and an IMAP mail interface will be provided for enterprise users to bring Maestro Mail into their own system.

Protecting a FreeBSD server

In Episode 048 of the BSD Now podcast, Allan referenced a great blog post on twisteddaemon listing basic security steps to perform after a new install. The checklist is also a good guide for a mature server checkup, which I recently did with a production server. Besides confirming sshd was configured correctly for public-key login only, I found forgotten open ports related to ntpd and ftp enabled (neither of which I need anymore), and I also found syslogd was opening a port for remote logging (all of which have now been disabled).

In addition to the checklist, Allan also recommended using a tool like denyhosts to reduce ssh door knocking. I’ve never quantified the time being wasted checking the door, but I’m running older hardware and my server log lists several hundred to upwards of a thousand knocks per day, so it may be significant.

Installing denyhosts was pretty simple with the help of On How to Install denyhosts on FreeBSD. The only issue I had was how to include at least one allowed port to prevent accidentally locking myself out. I never connect to the server from a static IP address, and it’s not readily clear to me what addresses would cover my travels around town. However, the server is in the basement, so it’s not an issue so long as I’m not travelling.

I’ll let you know in a couple weeks how my server logs are looking, and if my 2G single-core P4 is feeling less stressed (and behaving snappier).

Other references: