Category: Howtos

On this category, I post various HowTo articles and setup tutorials for different FOS Sofwares. During my spare time, I learn how to install everything, from any Linux-based applications to server apps which are intended for Cloud VPS operation. Once learned… I document it, write the guide and post it on this section of the site. This site also serve as my personal reference site, I tend to forget how I setup something, especially when haven’t used it for a while. So I resort to my own blog post and read my own guide to install an App. I work as part-time virtual tech assistant on various Freelancing web site and that would mean that I have real-world experience in setting up sever applications or FOSS. This would mean that I’ve handled several Cloud VPS and other Linux-based softwares, in a professional level. And yes, I am a self-taught tech dude as mentioned in my About Chubbable’s page, and I am making small money off of it. I setup and configure servers for production environment, and whatever I learned and experienced from it shall be shared and posted on this Blog.
  • 3 of the Best Helpdesk Support Software This 2016

    3 of the Best Helpdesk Support Software This 2016

    If you’re looking for the best Help Desk Software for your small business, then read on to know more. I’ll be talking about the few systems and platform that I’ve personally tested and actually configured and used. This is not a review post, it’s a shortlist of what I’ve tested and worked for us.

    What is a Help Desk System?

    Without resorting to any third-party resource for its definition, I define “Help Desk System” or Help Desk Ticketing System as…

    …Any software that a company or business can use to provide answers and resource to help their customers, whether it be for an after-sales or pre-sales inquiry.

    It is a centralized customer support system, not only limited to customer support via phone calls, like what Call Center is used for.

    It’s also a ticketing system which you can use to create and save a record for an issue reported by customers, and any available agent can have access to it and provide answers or follow up on any issues reported by customers.

    Help Desk or Ticketing System are not limited to just providing answers or inquiries generated by a customer or a would-be-client. It is also a centralized source of text or rich media which are helpful to existing customers. These helpful resources are collectively knows as FAQ Pages or Knowledgebase Pages.

    For the modern Help Desk Support Software, it can accept any product or service related questions via the following mediums:

    • Phone Calls
    • Emails
    • Live Chat
    • Message Post
    • Self Service Ticket Creation
    • Social Media Page Post and Messages

    This is my own definition of what a Help Desk System is.

    Features Offered in a Help Desk or Ticketing System

    Not all help desk system are created equal, some have the basics some have the bells and whistles, but not so important features. The most common features provided by these kind of system are:

    1. Ticket Creation
    2. Group or Department
    3. Canned Responses
    4. Automatic & Live Agent Notification
    5. Multi-channel Support
    6. Knowledgebase Page or FAQs
    7. Custom Support Portal
    Ticket Creation
    A ticket is an issue reported by client or an pre-sale or after sale inquiry sent by a customer through any channel provided by the business. This function includes; changing of ticket statuses (resolved, pending, or closed), ticket assignment to other agents, merging of tickets and setting priority.
    Group or Department
    A feature in which you can set what group or department an inquiry will be sent to. For instance; pre-sale deparment, after-sales department, complaints & feedback department or payment & shipping department.
    Canned Responses
    Are pre-composed answers to frequently asked questions or can also be a saved string of text where an agent sets a hot-key or shortcut to quickly paste in to their post editor or chat window. For instance; instead of typing the whole string… “Hi! How may I help you today” – the agent would rather press ctrl + h to quicly paste in “Hi! How may I help you today”. Saves time!
    Automatic & Live Agent Notification
    When agents are logged-in to their Dashboard, they are automatically notified when new ticket / issue is created and sent to them by the customer. Notifications may be in the form of visual or audible notification.
    Multi-channel Support
    with some Help Desk Software out there on the internet, some just offer Email or Ticket based support only. While for other software/system offers a number or channels that enables a small business to accept any inquiries from several options like; social media posts, SMS or Phone calls, Live Chat and Twitter Tweets. While some Help Desks offers Social Media as other channel to support their clients, not all can support different types. I know one which cannot support a Facebook direct message, while the other supports it without a problem. Read further below to know more about this.
    Custom Support Portal
    A feature where you can map a domain name for your brand, to a support portal. A support portal is your internet address which is attached to your brand and where customers logs in and access support pages like knowledgebase articles and faq pages.
    For instance, you can create a sub-domain for your brand like, https://support.mybrand.com, then attach your portal to it by configuring your DNS settings. Once configured, going to the sub-domain will access your support portal where customers can log in and create a ticket for specific issues or help themselves by reading knowledgebase articles and answers to frequently asked questions.

    Best Help Desk System We’ve Tested

    If you’re searching for the best help desk ticketing system out there on the Internet, well look no further, because I’ve narrowed them down and listed them below. These may not be the best for you, but for me they are.

    Note, that I’ve personally tested these system and actually used one of them for a while. In case you didn’t know yet, I also work as a part-time freelance tech support agent for a small company. Sometimes they assign me as Live Chat agent as well as tasked to answer email-based inquiries. I explicitly mentioned “sometimes” above, I’m not claiming to be an expert user here. Just telling you that I have actual experience using these platforms. They are actually a cloud-based Help Desk Ticketing System. Below, are the 3 Helpdesk Software that I’ve personally tested and found that they’re among the best.

    3 Cloud-based Help Desk Support Platform

    These are the 3 platforms I’ve tested and evaluated. I will not make any conclusion as to what would be the best Help Desk system for you. But in our case, I will mention what we picked and the reasons why we have decided to use the platform. These software have one thing in common, they convert messages into tickets, whether it be from Live Chat messages, Email inquiries, or Social Media posts. Also take note that these 3 are cloud-based and paid helpdesk platforms, which are ready to use once you completed the basic configurations.

    <dl id="cloud-based-helpdesk-software" markdown-"1">

    1. Fresh Desk
    A brand with a tagline “Freshdesk Support Suite – Everything you need to deliver‎” and stylized as Freshdesk. With Fresh Desk, all inquiries sent from different channels are all sent as Tickets. Whether it was sent from Live Chat, Contact us page or Email.
    Freshdesk is a cloud-based Helpdesk System. No need to install, you just need a paid account.
    Their ticketing features includes;
    • powerful ticketing system
    • multi-channel support (phone, email, chat)
    • event triggered action (ie: auto purge closed tickets)
    2. GrooveHQ
    Stylized and written as Groove – is another Helpdesk Platform with a tagline “Simple Help Desk Software”.
    Like Freshesk, Groove also has multi-channel feature where a client could sent out support messages either via live chat, email or social media posts. Though Groove’s Social Media Channel features are quite limited compared to the 3rd platform I’m going to mention below.
    Groove also supports email forwarding like Freshdesk, where you can forward any email messages sent to your support email and converted as support tickets. In addition, it supports connecting multiple Twitter and Facebook accounts to your Groove account and you also have the option to route the different social accounts to different mailboxes. You can use any email address you would want and forward it to each group or department inside your company. It has a multi-brand function, where you can forward any support email coming from specific email address then going to specific department. For instance, you can forward messages sent to [email protected] to the tech support department of your company. All agent who are members of the group can read the message and the agent can either grab it or assign the ticket to another agent.
    Based on my personal test, you can create a separate email address for each brand or department you would need. You can forward messages from your gmail address to each configured brand or department. For example, [email protected] will go to Brand 1’s support department, and [email protected] will go to Brand 2’s support department. To learn more of the platform’s feature, visit their website. Link is posted below.
    3. Ladesk
    The third cloud based helpdesk platform that I’ve tested is called **Ladesk**, another Help Desk System with a tagline – Help Desk Software & Live Chat. This platform is also advertised as “helpdesk ticketing software”.
    This is the simplest platform that I’ve tested and used. This is the help desk software that we’ve decided to use and stick on. For use, this is the best cloud-based help desk system to use. It has the basic features found in Groove and Freshdesk, but their Social Media features is more usable and feature rich, at least with our case.
    The primary reason why we chose Ladesk, is because of their Facebook/Twitter feature. While the two platforms mentioned above also supports this, Ladesk supports Facebook Page posts & comments, also direct messages are converted as tickets. Freshdesk and Groove only supports Fan Page posts which is kinda limited with our case. We market and engage our clients heavily on Facebook, that’s why we really searched for the feature we need and it’s great we found Ladesk, who can really perform and do what we want.
    You can checkout the full details of the features by visiting Ladesk’s features page.

    Other Cloud Helpdesk Software

    • JitBit: https://www.jitbit.com
    • Giva: https://www.givainc.com
    • DeskPRO: https://www.deskpro.com/
    • Deskero: http://www.deskero.com/

    JitBit

    Stylized as JitBit – Is a Hosted Helpdesk, a cloud based support ticket system that has all the features you may need. They take care all of the server maintenance and security. They use Amazon as their infrastructure and where they host your Helpdesk instance.

    They offer a 21-day trial and your demo instance will be hosted under a sub-domain like yourbrand.jitbit.com. JitBit claims they can provide instant delivery, right after you signup. Your hosted app will be available within seconds. Click here to visit their pricing page.

    Giva

    Stylized as Giv@ is a Calfornia based company, who advertise their platform as eHelpDesk. It’s another cloud-based help desk software and Giv@ claims to be a HIPAA Compliant. HIPAA, is the Health Insurance Portability and Accountability Act, sets the standard for protecting sensitive patient data. Any company that deals with protected health information (PHI) must ensure that all the required physical, network, and process security measures are in place and followed. That said, Giv@ targets industries who needs helpdesk support sytem for patients. They primarily target health institutions looking for a hosted help desk system. You could signup for a Free-Trial on this page.

    Deskpro

    Stylized as DeskPRO is also a cloud-based help desk support and ticketing system, and their company is based in London, United Kingdom. They also offer on-premise instance, which is also referred to as self-hosted option. The offer a 14-day trial and you need to book for a schedule. DeskPRO claims to use bank level security practices to ensure customer data is kept fully secure. Price starts @ $30/agent/month

    Deskero

    Stylized as Deskero – is a simple Help Desk Software and it’s advertised to have native support for Twitter and Facebook, and also offers a great integrated chat, which you can use to receive customer feedback or inquiries and convert them into tickets. A reasonable price starting @ $12/agent/month Checkout the features from this page.

    Open Source and Free Help Desk Software

    These are the open source help desk system that I’ve listed so far, though not all were tested yet.

    It’s a Wrap!

    Searching for the best help desk and ticketing system may require you to actually test the system and see all the features advertised, in action. Overkill or bloated features doesn’t necessarily mean it’s the best. It’s best that you gather and list the features/functions you need, then compare that set of features from other platforms.

    You may picked one from the 3 platforms mentioned above, they share similar features, but a specific feature may be superior than the other. I have encountered others, like Zendesk, but haven’t got the time and chance to test it since they require a scheduled demo. Freshdesk, Groove and Ladesk offers a quick access to their free demo, which lets you test drive their system and actually use it with your own data like, url, email, social pages, and domain name. So make sure you actually explore their demo and test it really well. You could play the role of a client using a browser, while using another browser for agent role, and actually test how the ticket can be handled.

    The best helpdesk support ticket system should be the one that fits your needs, it doesn’t have to carry all the bells and whistles. Pick the one which has the right features/function, it doesn’t need to be overkill.

    Opt for cloud-based helpdesk solution if you’re not confident in handling security yourselves. Hosting a free and opensource software like osTicket requires a secure server and technical expertise to protect any sensitive customer data. But if you have a team of experts who can handle all security issues, then you could run your own help desk system using osTicket, otherwise, you should signup for a cloud based solution and all these issues shall be taken care of.

  • How to Install osTicket on a Virtual Private Server – The Quick and Easy Way

    How to Install osTicket on a Virtual Private Server – The Quick and Easy Way

    Step-by-step guide for newbies, on osTicket installation (the free help desk software) using Ubuntu Server. You could follow this guide using Linux-based machine or server on your local area network, or on a Cloud VPS hosted by companies like; DigitalOcean, Linode or Vultr. You could also use a virtual machine if you want to.

    Jump Links


    In this guide, I’ll discuss the steps using a cloud-based Ubuntu Server, particularly Ubuntu 16.04 Server Edition. My client machine shall be Linuxmint – an Ubuntu-based Linux Distro. If you’re on Windows, you need to install SSH client like Putty, to let you connect to the remote server via SSH protocol.

    If you want to use a Cloud VPS instead of a local machine, then I would recommend DigitalOcean as your provider. Because setting up a LAMP Stack on this host would be quick and easy using their "One-click Apps" feature. It should let you bring up an instance of Apache, MySQL and PHP without manually typing commands. DO is one of the best cloud vps provider out there on the Internet. I’ve been using their service for couple of years now and not a single ticket or support request was sent to them.

    If you opt to use your own machine as server, then skip to Step 2. Otherwise, start off with Step 1, which require you to have an account with Digital Ocean. Use my special link to sign up for an account and you should get additional credits worth $10. You can use this to test osTicket on the cloud for more than a month. When you decide to continue using it, then just top up your account.

    Note: When you create your Ubuntu 16.04 Droplet or VPS using DO’s "One-click app" feature, you should get a free SSL certificate along with your VPS – but you’ll have to set it up.

    The free SSL Certificate is brought to you by Letsencrypt.

    For this to work, you need install few things, but DO got you covered and pre-installed everything so "Let’s Encrypt" would work for you. Isn’t that awesome!

    But you need to further set it up.

    Requirements for osTicket Cloud VPS Installation

    1. Web Server: Apache 2.4 or later
    2. PHP 5.6 (v7.0 is not supported yet – as October 2016)
    3. MySQL 5 (or later)
    4. A Cloud VPS with at least 5GB of RAM – you need more once you go on production and traffic grows.

    As additional requirements for this guide:

    1. Email account – for signing up for Digital Ocean>

    2. DigitalOcean Account with at least $10 credit

    3. Puttygen if you’re on Windows

    4. Domain Name (Optional) – if you decide to use it in production along with your Web site.

      Note: You won’t be able to use Letsencrypt with your osTicket instance if you don’t properly configure your DNS. Though, you can still install and access your instance using the IP address of your VPS.

      For a production environment, you need to have a DNS record for the VPS that should hold the osTicket instance. Read below to know how I set up my DNs Record for support.chubbable.com.

    How Do I Setup My DNS Record

    First, you need an overview of my setup. Then one I’ve used for this specific guide.

    My Setup Overview:

    • My Domain Name is hosted by another Registrar
    • My Cloud VPS Host is DigitalOcean – so my main domain "chubbable.com" and "support.chubbable.com" has their own VPS.
    • My osTicket Instance is on another Droplet or VPS
    • A separate "A Record" was configured
    • My sub-domain name for osTicket is support.chubbable.com

    For those who knew how to set their own DNS record, you may skip this part. For the newbies, read further carefully. Also refer to your specific Domain Registrar and read their help documents related to DNS Records.

    If you have an existing domain which is currently hosted by another company – this guide would work for you by creating an "A Record" from your Registrar’s Admin Dashboard. Then idea is – point your sub-domain to the IP address of your osTicket VPS. Steps varies for various Registrars, make sure to read your Registrar-specific guide.

    With my specific case, I only had to add "A Record" for support and pointed to my osticket IP Address. I’ve done this using DO’s networking setup page. My registrar was set to use DO’s Name Servers.

    The setup page should look like these:

    Screenshot - Setting up a hostname in DigitalOcean - Step 2

    Screenshot - Setting up a hostname in DigitalOcean

    With this kind setup, I was able to point support.chubbable.com to my osTicket VPS.

    osTicket’s Latest Version

    The latest version of osTicket, at the time of writing this post is, v1.10 (Released November, 1st, 2016) – which you can download from this page.

    The Step-by-step Guide

    Please read the following instruction, word for word to successfully setup osTicket using Ubuntu 16.04. Steps would also work for Debian-based VPS.

    You may need to familiarize yourself first with the commands used in this guide.

    [adsense-responsive] **Commands Used:** – `cp` – copy files from and to any location – `mv` – move any files from and to any location – `chown` – set owner for files/directories – `chmod` – set permission for files/directories – `find` – search files or directory, then execute a command using `-exec` Example: `find /var/www/html -type d -exec chmod 755 {} \;` Where `find “location”` – substitute location for the location you want to apply the command. It’s safer to just use the full path, so you can use it wherever you’re at in your command prompt. ### Step 1: Create the Droplet Droplet is what they call for a VPS instance in Digital Ocean. To create one, simple click the `Create` button. Then on the next page, under the **Create Droplets** heading, click on **One-click Apps**, then choose **LAMP on 16.04**. This should install a 64-bit version of Ubuntu 16.04 Server along with Apache, MySQL and PHP. [caption id="attachment_2381" align="aligncenter" width="725"] Screenshot - DigitalOcean LAMP Stack on Ubuntu 16.04 LAMP Stack on Ubuntu 16.04[/caption] Scroll down a little further and **Choose a Size** – pick the 1GB package. Then choose your preferred data center region, pick the one closest to your target audience. You could pick from; New York, San Francisco, Amsterdam, Singapore, London, Frankfurt, Toronto or Bangalore. Further down you may choose to use your SSH keypair by copy/pasting your SSH public key on the placeholder. If you don’t provide one, then your SSH user name and password shall be sent to you via Email. You have to change your root password immediately after logging in for the first time. > Note: For a production environment, you MUST use your own SSH keys when connecting to your remote server. Next, type your preferred Host Name, in my case it’s `osticket`. But in production, I would use `support.chubbable.com` [caption id="attachment_2382" align="aligncenter" width="725"] Screenshot - DigitalOcean - Entering Your Hostname DigitalOcean – Entering Your Hostname [/caption] Finally, hit the **Create** button and wait for a few seconds. Yes, it only takes a few seconds to build your VPS. ### Step 2: Login to your Droplet/VPS Login to your VPS to check things out and make sure LAMP is working. When you SSH for the first time, you’d be asked to change your password (*if you didn’t use your Public SSH Key*). So copy the password that was sent to you then paste it on the terminal. You could use middle-mouse button to paste the password. Once done, enter your new password twice. Take note, that when you type your password, it won’t printed on your screen. It’s some Unix security measure. [caption id="attachment_2383" align="aligncenter" width="725"] Screenshot - Changing Your Root Password Changing Your Root Password[/caption] > Note: I’d like to stress that you should use a key-based SSH login regardless, whether test or production environment. It’s more convenient, secure and easy to use than a password-based login. Once logged in, purge PHP 7.0 since it is not yet supported by osTicket. Using this specific version will throw **Error 500** error when installing osTicket. We have to do this when using Ubuntu 16.04, since PHP 7.0 comes shipped with it. But before doing the procedure, take your time to configure your LAMP installation. When the first you login in you should see similar message like this: ——————————————————————————- Thank you for using DigitalOcean’s LAMP Application. LAMP has now been enabled. You can access your LAMP instance at: Your web root is located at /var/www/html and can be seen from http://your.vps.ip.address The details of your PHP installation can be seen at http://your.vps.ip.address/info.php The “ufw” firewall is enabled. All ports except for 22, 80, and 443 are BLOCKED You are encouraged to run ‘mysql_secure_installation’ to ready your server for production. The passwords for MySQL have been saved to: /root/.digitalocean_password Let’s Encrypt has been pre-installed for you. If you have a domain name, and you will be using it with this 1-Click app, please see: http://do.co/le-apache ——————————————————————————- You can learn more about using this image here: http://do.co/lamp ——————————————————————————- To delete this message of the day: rm -rf /etc/update-motd.d/99-one-click The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Notice the message above where it says “run `mysql_secure_installation`” – just do as it says. But before doing so, take note of your root MySQL password which should be located at `/root/.digitalocean_password`. To view your MySQL Password, type this on your terminal: cat /root/.digitalocean_password Sample Output: root_mysql_pass=”your-password-here” Moving forward, run `mysql_secure_installation` and paste in your password, the one you just copied using the `cat` command. Hit Enter key and a question should be asked like so: VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? You could answer **NO** here by pressing `n` key then hit enter. A series of question will be asked: – `Remove anonymous users?` – answer `y` for yes – `Disallow root login remotely?` – yes – `Remove test database and access to it?` – yes – `Reload privilege tables now?` – yes – …then it should say all done! Now, we are ready to work on the osTicket Installation using our LAMP Stack on Ubuntu 16.04 ### Step 3: Purge/remove PHP version 7.0 Like I mentioned before, PHP 5.6 is not yet compatible with latest version osTicket (v1.10 – Latest Stable Release, Released November, 1st, 2016), so we need to purge or remove PHP 7.0 since it came with the LAMP Stack installation. Type the following command (or copy/paste it) to remove PHP 7.0 from your Droplet/VPS apt-get purge php7.0-common Sample Output: Reading package lists… Done Building dependency tree Reading state information… Done The following packages were automatically installed and are no longer required: fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libtiff5 libvpx3 libxpm4 Use ‘apt autoremove’ to remove them. The following packages will be REMOVED: libapache2-mod-php* libapache2-mod-php7.0* php* php-apcu* php-common* php-gd* php-mysql* php7.0* php7.0-cli* php7.0-common* php7.0-gd* php7.0-json* php7.0-mysql* php7.0-opcache* php7.0-readline* 0 upgraded, 0 newly installed, 15 to remove and 14 not upgraded. After this operation, 14.7 MB disk space will be freed. Do you want to continue? [Y/n] Of course you want to continue, so press `y` then hit ENTER. Once done, type `php -v` – you should get the following response: The program ‘php’ can be found in the following packages: * php7.0-cli * hhvm Try: apt install That’s great, we can now install PHP 5.6 – the version that osTicket currently supports. ### Step 4: Add PPA Repo and Install PHP 5.6 To install php5.6, we must first add the proper repository. Type this on your terminal, one at a time: 1. `add-apt-repository ppa:ondrej/php` [See sample output below](#add-apt-repo)

    2. `apt-get update` 3. `apt-get install php5.6 php5.6-cli php5.6-mysql php-gettext php5.6-mbstring php-xdebug libapache2-mod-php5.6 php5.6-gd php5.6-imap php5.6-xml php5.6-intl php5.6-apcu unzip -y` The command should install and satisfy all the required and recommended packages:
    1. php -v – to check php 5.6 installation, sample output below:

      Sample output:

      PHP 5.6.29-1+deb.sury.org~xenial+1 (cli)
      Copyright (c) 1997-2016 The PHP Group
      Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
      with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
      with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

      Note? If PHP still shows up as PHP 7.1.0 or PHP 7.0 – that’s okay for as long as 5.6 is enabled. For DigitaOcean users, access your URL like yourdomain.tld/info.php . You should notice that 5.6 is the one active. See sample image.

      [caption id="attachment_2395" align="aligncenter" width="720"] Screenshot - PHP 5.6 Enabled PHP 5.6 Enabled[/caption] But some people may still ask… **I’ve already purged `php7.0` but I still see it when doing `php -v`?** For some reason unknown yet to me, after installing php5.6, `php7.*-common` came back installed on the VPS. This wasn’t the case a few months ago. It’s perfectly safe though. But if you really want to get rid of it, you could do the following: 1. `apt-get purge php7.0-common -y` – if you see PHP 7.0 or 7.0.x 2. `apt-get purge php7.1-common -y` – if you see PHP 7.1 or 7.1.x Then do a `php -v` command to check your PHP version. It should now show as `PHP 5.6.x`
    2. Restart Apache, then you’re Done!

      To restart apache:

      service apache2 restart

    Note: When doing add-apt-repository ppa:ondrej/php, you’ll notice a warning like this:

    WARNING: add-apt-repository is broken with non-UTF-8 locales,
    see https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:

    If you’re using UTF-8 Locales in your VPS (ie. en_GB.UTF-8), then you should be good to go. So hitting Enter key would produce positive effect and the ppa repo should be added. Please refer to the sample output below.

    BUT if you’re not using UTF-8 locales or otherwise knows as non-UTF-8 locales – you could encounter some error within the PPA Key name – where Ondřej Surý is displayed as Ond\xc5\x99ej Sur�

    So in case you were using non-UTF-8 locales – you should invoke the following command when adding the php5.6 repo:

    apt-get install -y language-pack-en-base

    hit Enter key then…

    LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

    hit Enter key – and follow sub-steps 2 and 3 above

    Sample Output:

    gpg: keyring `/tmp/tmptbhqemjf/secring.gpg' created
    gpg: keyring `/tmp/tmptbhqemjf/pubring.gpg' created
    gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com
    gpg: /tmp/tmptbhqemjf/trustdb.gpg: trustdb created
    gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported
    gpg: Total number processed: 1
    gpg:               imported: 1  (RSA: 1)
    OK

    Step 5: Download and extract osTicket

    You could download the zip file directly from this link: http://osticket.com/sites/default/files/download/osTicket-v1.10.zip

    But I strongly recommend that you checkout the latest in http://osticket.com/editions – fill out the form in case you haven’t done it yet.

    For the sake of this guide, we will download the file directly to our VPS using the wget command. To download the file, simply type:

    cd ~ && wget http://osticket.com/sites/default/files/download/osTicket-v1.10.zip

    The file should now be in your root’s home folder. To check it out, you could type cd then do ls -l or ls -l ~. Or just ls -l if you’re on the root home folder. Meaning, your prompt must look similar to this:

    root@support:~#

    Next, extract the file osTicket-v1.10.zip using the unzip command. Make sure you’re on the root’s home folder.

    The command should be:

    unzip osTicket-v1.10.zip -d osticket

    That should extract the files inside osticket directory. Do a ls -l command and you should be able to see the folder.

    Now, inside the osticket directory you should see two folders named scripts and upload. You can check those by invoking this command:

    ls -1 ~/osticket

    Sample output:

    scripts
    upload

    To check the contents of upload folder (the actual osTicket core files):

    ls -1 ~/osticket/upload

    Step 6: Copy the osTicket core files to Apache’s web directory and set necessary permission.

    Copy all the files inside upload folder to /var/www/html – this is our default Apache Web Root Folder. This might not be the case if you’re using another VPS provider/host or had used another script to build your LAMP VPS.

    The command should be:

    1. cd osticket/upload
    2. cp -r . /var/www/html
    3. cd /var/www/html
    4. cp include/ost-sampleconfig.php include/ost-config.php
    5. chown -R :www-data .
    6. find . -type d -exec chmod 755 {} \;
    7. find . -type f -exec chmod 644 {} \;
    8. chmod 0666 include/ost-config.php

    Step 7: Create a database using commandline.

    With this guide, we did not install phpMyAdmin instead, we’ll be using just the commandline – which is fairly easy to use for this specific task.

    Prepare your MySQL root password – it should be located in /root/.digitalocean_password. Use cat /root/.digitalocean_password – to retrive your password.

    In case you’ve changed your root password, then prepare to enter that on the following steps.

    So let’s move on and create a database for osTicket.

    Login as root user and enter your password. Typing your password won’t be printed on screen.

    The command should be (you should get a Query OK, message for every command):

    1. mysql -u root -p – then enter key

    2. Paste or Enter your password

      You’ll get to mysql> prompt when login is successful.

    3. create database ost;

      To create a database named ost – as in osticket. You could name yours differently.

    4. grant all on ost.* to 'ost'@'localhost' identified by 'yoursecretpassword';

      yoursecretpassword – You have to use your own secure password.

    5. flush privileges;

    6. quit

      You should be back to your previous prompt (root@yourhostname:~#)

      Next… the osTicket Web install part.

    Step 8: osTicket Installation using the wizard

    Now that you have done the necessary file/directory permission and the database, we’re now ready to install osTicket. So fire up your favorite browser and head over to your VPS web address. If you’re just playing around you could use the IP address of your VPS or any free domain name. But if you intend of using it in production, then you should’ve prepared the necessary DNS settings so you could use the proper url for your support system.

    In my case, I setup support.chubbable.com to be my osTicket Support URL. It is forwarded to my osticket VPS – the one I created earlier.

    When everything is done correctly, accessing your support url should open the osTicket installation wizard. If you followed the php5.6 installation steps carefully then everything required including recommended packages should have a green colored check on them. See this [reference image][20] below.

    [caption id="attachment_2384" align="aligncenter" width="703"] Screenshot - osTicket Requirements - All GreenosTicket Requirements – All Green[/caption]

    If no issues found, click on the Continue button and follow the rest of the steps, which should be easy to follow.

    Fields To Fill Out;

    System Settings:

    1. Helpdesk Name: i.e. Chubbable’s Help Desk
    2. Default Email: i.e. [email protected]

      You need to setup your own domain attached email address, so you could have an email address with your domain name attached to it. But for the meantime, you could use any Gmail account and configure Forwarding later. Postfix should be use for this part to send out email from the VPS.

      Will do a guide on how to do this later, depending on my availability and motivation. I’ll discuss how you would attach your osTicket to 3rd-party email host like Mailgun, Mandrill, Zoho Mail and the like.

    Admin User – Pretty simple to fill out, no further explanation needed. But take note that you have to fill the Email address for the admin user. It should be a real and working one.

    Database Settings:

    1. MySQL Table Prefix: you may leave this as it is, unless you know what you’re doing.

    2. MySQL Hostname: localhost

    3. MySQL Database: ost

      or use whatever you configure when your created your database.

    4. MySQL Username: ost

      or use whatever you configure when your created your database.

    5. MySQL Password: your-password

      Click on Install Now, whenever you’re ready.

      If you encounter Unable to connect error for MySQL – double check your database name, user and password. Make sure you created those database details properly [using these steps][11].

      You should be taken to the Congratulations! page, if you installed osTicket successfully.

      [caption id="attachment_2385" align="aligncenter" width="685"] Screenshot -  osTicket Installation Screen 1 – osTicket Installation[/caption] Lastly, don’t forget to change the permission for `include/ost-config.php` file – set it to read-only mode. Also delete the `setup` folder from your web directory. To do so, invoke these command, regardless of your folder location: `chmod 644 /var/www/html/include/ost-config.php` – to set the file in read-only mode `rm -rf /var/www/html/setup/` – to remove the setup folder. And that’s it! You can now visit your front-end or your admin/staff dashboard by simply following the link posted on the bottom of the `Congratulations!` page. In my case it says… Your osTicket URL: `http://support.chubbable.com/` Your Staff Control Panel: `http://support.chubbable.com/scp`

    Securing your osTicket Virtual Private Server

    When using DigitalOcean, firewall shall taken care of automatically while your droplet or VPS is being created. But that only happens when you use the One-click app feature.

    If you type this in your terminal: ufw status – you should be able to see which ports were firewalled. You have to take care of this manually if you choose to only create a bare Ubuntu 16.05 server.

    Now, for additional security once you decide to go on production, you need to do some extra effort to secure your server. And those are mentioned in my other post listed below.

    Please read on the following server hardening tips:

    Use a Free SSL on osTicket – Letsencrypt

    Letsencrypt
  • Easily Build Your Own Email Server Using Ubuntu Linux

    Easily Build Your Own Email Server Using Ubuntu Linux

    Another step-by-step guide in building and running your own email server on the cloud using your own domain name. You’ll need Ubuntu Server and "Mailinabox" for this tutorial. You will need to self-host it on a dedicated server or VPS. You can use known VPS providers like DigitalOcean, Vulture or Linode. Take note, you need to be technical when running and maintaining your server. For newbies and self-learner like myself, you can read on to get the job done.

    Setting up your own email server is not always the best option due to several reasons. Number of one of which is security. If you’re not knowledgeable enough to run the server yourself you might end up with a compromised server and other security breaches, due to faulty configuration and the like. And this is the top reason why you shouldn’t host and run your email server and should instead use one of well-known third-party email services like Gmail/G-Suite, Zoho Mail, Fast Mail and etc.

    If you’re interested, you could take advantage of a ready-to-use and free email service, instead of building your own. Click this link to know more.

    But if you’re really nosy and interested to make your own, then follow on.

    With this guide, you will learn how to setup and run your own e-mail server using your own domain name. You will run through some basic server hardening steps to at least implement the needed basic security for a server. I will cover that part in this guide and basic knowledge in Linux should be helpful to follow this guide. I won’t explain further what each command would do in this guide, but you can still follow the step-by-step procedure to successfully setup the server.

    So when you’re ready, jump on in and follow through the actual steps below and construct your private email server using "Mail in a Box". Click on the jump links below.

    Jump Links

    Use the following links to quickly navigate to a specific section of this how-to post.a


    What is Mailinabox

    Mail in a Box — a script to build a personal email server, often stylized as Mailinabox or Mail-in-a-Box, is a project developed by Josh.

    It’s composed of various free and open-source software bundled together, designed to help users easily deploy an email server instance capable of hosting multiple domains.

    In reality, setting up a server to send out emails requires manual configurations using the command-line. You will have to configure each component correctly in order to have a complete and running setup, without issues. Further more, incorrect and incomplete configuration of each component could render the box unusable or failure to send out an email.

    But with "Mailinabox" configuration is a breeze and automated, you can either leave the default setting or customize them for your needs.

    Mailinabox sets up Fail2ban, Letsencrypt SSL Certificate, Firewall (using UFW in Ubuntu), for basic server security. For anti-spam and other security features, MIA sets up; graylisting, SPF, DKIM, DMARC, opportunistic TLS, HSTS and DNSSEC. Without these correctly configured, your message will end up in spam folder of Gmail, Yahoo! and other known email services out there on the Internet.

    MIAB was developed to be an "all-in-one" solution that can handle IMAP/POP, SMTP, spam filtering, webmail and also DNS resolution. And since it can handle DNS, you can use MIAB as your DNS for your other domain.

    Email Service Providers

    You really don’t have to roll your own email server, when in fact a free email service would be sufficient. You can always use one of the services below to handle your normal email sending needs. But if you think you have a special need to build your own for whatever purpose you might have, then read on and follow the guide.

    Free Email Services and Their Sending Limits

    • GMail – Free User sending limit is 100-150 emails per day, when connected to the server from an email client like Thunderbird. Using the Web UI will let you send 500 emails a day.
    • Zoho Mail – For Free Accounts, 50 emails x total confirmed and active users (per day, per organization) for up to 4 users. For accounts with more than 4 users, the limit is 200 emails (per day, per organization). For example, you have 2 active and confirmed users in your organization’s account. Then the total number of individual emails that a user can send per day, per organization will be up to 100 (50 x 2) emails. If you have 6 (or anything more than 4) active and confirmed users, then the total number of individual emails that can be sent will be 200, as that is the fixed limit for more than 4 users.
    • Outlook – When conditions are met, a free email user is shall be allowed to send a maximum 300 emails per day (and no more than 100 recipients per message).
    • Yahoo! Mail – Outbound email messages are limited to 500 per day. Each message can be sent to 100 recipients at most. Each recipient of a message counts as one email towards the 500 daily limit (i.e. one message sent to 50 recipients counts as 50 emails towards the limit.
    • FastMail – For Trial/Free Users, they have a sending limit of a maximum of 120 messages per day.
    • Hushmail – Maximum limit is 350 emails every 24 hours, when using the Webmail. 2000 emails when using email client (i.e. Thunderbird). Each recipient of an email counts as one email sent. Sending one email to 10 recipients is the same as sending 10 emails each with a single recipient.
    • Proton Mail – Free Plan sending limit is 150 messages/day, 50 messages/hour.

    Basic Email Server Security

    Once you fired up your Droplet on DigitalOcean or VPS from other hosts, you need to setup basic security for very obvious reason. You might not know, your server might get compromised even just after putting it up on the cloud. This is very possible with modern automated SSH Brute-forcer and other hacker bots out there on the Internet. I won’t discuss deeply in to this matter, but this step should be done before any other else on the server.

    Note: You may skip this if you would only do a quick testing on the MiaB script, but you will have to destroy your droplet once you decide to go in production. You need to start from scratch and do the basic security procedure.

    For basic security we need to:

    1. Basic SSH Security
    2. Create a new user and make it a sudoer
    3. Setup TCP wrappers

    Things Needed for a Private Email Server

    Before even jumping on the actual procedure, you must have the following on hand already. These are the must-have requirements so you can run your private email server.

    • VPS with at least 1GB of RAM, loaded with Ubuntu Server 14.04 64-bit – As of June 5, 2018, MIAB only supports Ubuntu 14.04. You may read why no support for Ubuntu 16.04 on this page.

      You can get a $5 VPS with 1GB RAM from DigitalOcean, Vultr or Linode.

    • Domain Name for the email domain – you can use your existing domain name for this, but you need to modify your DNS settings on your Domain Registrar’s Dashboard. If you would need to buy another, I higly recommend that you get from Gandi.net (Chubbable is registered on Gandi) for your domain name because I know it supports DNSSEC and it works well for Mail-in-a-Box. You can use NameCheap too or other Registrar, but support for DNSSEC is not good everywhere.

      To know more about known good domains, click here.

    • Server Name – or Host name can be any text string up to 24 characters drawn from the alphabet (A-Z), digits (0-9). Your server name or host name must be a FQDN. To simply explain this without being too technical, your FQDN is your hostname + domain name.

      For example, you would want to name your server as email, while your domain to use is chubbable.com, then the FQDN would be email.chubbable.com.

      If you’d want to build a multiple email server, then perhaps you’d name your machines like; box1.chubbable.com, box2.chubbable.com.

      But for the sake of this guide and simplicity, consider box as your hostname. So it would be box.your-domain.tld.

    Known Good Top-Level Domains with DNSSEC Support

    Base on my research and some experience, these are the known good TLDs that has DNSSEC support. I’m using .com, .me and .email myself for my other domains.

    DNSSEC Supported Domain

    • .com
    • .email
    • .fund
    • .guide
    • .info
    • .io
    • .me
    • .net
    • .uk
    • .me
    • .uk
    • .us
    • .xyz

    There are other TLDs that can handle DNSSEC on Gandi.net – listed on this page.

    How should I know if my Gandi Domain supports DNSSEC?

    When logged in to your Gandi Account, go to Domains tab, click on your domain, click on DNSSEC, and you should notice the big "Add a key" button.

    The Step-by-step Procedure to Create Your Own Email Server

    Building your private email server requires several software and manual configurations. Added to that, you initially have to install your server OS like Ubuntu Server 14.04. You have to install all the components from scratch.

    But all thanks to MIAB, it makes life easier and takes care of the tedious tasks of configuring of an email server.

    Setup Overview

    To create your own personal email server, you need to go through these steps.

    1. Get a hosting account from DigitalOcean, Vultr, Linode or other VPS hosts out there on the Internet.

    2. Launch a VPS and Install Ubuntu 14.04

    3. Go through the steps of basic server security setup and hardening.

    4. Setup DNS from your Domain Registrar Dashboard.

    5. Download the MIAB script to your server and launch.

    6. Post Install Configuration.

    7. Testing and Troubleshooting.

    NOTE: It is very important that you go through step 4 first (DNS Setup), before taking up the actual MIAB installation. Else, you’ll be facing several issues which can be a waste of your precious time.

    The step-by-step Guide

    I’m not a Linux expert, though I am knowledgeable enough and has the actual experience that makes me qualified to write this guide in a newbie-friendly way. So follow through, don’t let the command line intimidates you.

    1. Get a Hosting Account

      I you’d ask me who’s to pick, then I’d say DigitalOcean. For me, their control panel is one of the easiest to understand and use. Of course, there are alternatives to DigitalOcean, there is Vultr and Linode whose price are similar to each other.

      While I know there is Google CE and Amazon AWS, which are the leading companies in web hosting service, they are difficult to use as a newbie. Learning curve is a bit steep and setting up your account and your first server takes time.

      So if you want to really get started fast and easy, grab a VPS over at DigitalOcean and fire it up real quick and go to the next step.

    2. Launch a VPS and Install Ubuntu 14.04

      When launching a VPS or Droplet on DigitalOcean, you don’t have to manually install Ubuntu, just point and click and you’re set. Wait for the build to complete and then login with your keys using SSH.

      If its your first time working with DigitalOcean and Server, I highly recommend that you first read on this post – Building a VPS using Ubuntu 14.04.

      On that post you will learn how to create your first Droplet or VPS and setup basic security. But with MIAB, you don’t have to worry setting up Firewall, Fail2ban and SSL, as MIAB will take care of them for you and set them up flawlessly. The other thing you will need to learn if you’re a newbie, is how to connect to your server using SSH.

    3. Go through the steps of basic server security setup and hardening.

    4. Setup DNS from your Domain Registrar Dashboard

      If you don’t want to go through issues while building your email server, please setup first your DNS and allow some time for the DNS propagation. Once complete, you are ready to launch and install MIAB.

      If you’re on Gandi.Net, you can setup your DNS by creating a Glue Record.

      To create a Glue Record on Gandi, login to your account and go to Domains, click on Your Domain Name, then click on Glue Records. Once on this page, delete all existing entries and start from fresh.

      Click on Add button, and enter ns1.box on the provided text field. Then type your VPS/Droplet IP address on the IP Address text field then click Save. Repeat this step but use ns2.box this time and same IP address you entered before.

      Note: You don’t need to type your domain name on this step. Gandi will append your entries with you domain name. So just type ns1.box and it will become ns1.box.domain.tld or ns1.box.chubbable.com.

      [caption id="attachment_2430" align="aligncenter" width="868"]Adding Glue Records in Gandi Dashboard Reference Image: Adding Glue Records in Gandi Dashboard[/caption]

      Next is to change your Name Server to your newly created Glue Record. To do this, click on Nameservers tab and click change. Update DNS1 and enter your Glue Record, in my example it was ns1.box.chubbable.com. Repeat this step with DNS2. Click Save button and you’re done.

      Wait at least 30-minutes before checking how the DNS propagation is doing.

      For the tools I used to check DNS propagation, I use WhatsMyDNS and MXtoolbox.

      So after 30 minutes or so, go and check how your DNS propagation is doing. On the text field type your domain name and set drop down menu to DNS, click Search button. A positive search result should show the configured Glue Records on this step. Using my example, it should show ns1.box.chubbable.com and ns2.box.chubbable.com. See reference image below.

      [caption id="attachment_2447" align="aligncenter" width="533"]Reference Image: DNS Propagation Check Tool Checking DNS Propagation[/caption]

      Using same tool as used above searching for your A Record should result showing the IP address of your VPS or Droplet. See reference image below.

      [caption id="attachment_2448" align="aligncenter" width="528"] Reference Image: A Record Checks Make sure A Record is pointing to the correct IP Address of your E-Mail Server[/caption] Once your DNS has propagated, you can now proceed to the next step, and that is – installing “Mail in a Box” on DigitalOcean.
    5. Download the MIAB script to your server and launch.

      Login to your server/droplet via SSH and download the Mail-in-a-Box script.

      As a reminder for newbies, logging in to your server via SSH is typing this on your command-line:

      ssh [email protected]

      Then you should be logged-in as root on your server, and your command prompt should look like this:

      [caption id="attachment_2432" align="aligncenter" width="580"] Reference Image: Command Prompt This is what a command prompt looks like.[/caption] So once logged-in, update your server box prior to MiaB installation. The command should be: sudo apt-get update && sudo apt-get upgrade After successfully updating your server, you are now ready to install MiaB. So let’s do that now. Grab the MIAB script from this page, copy and paste it on your command-line, like so: curl -s https://mailinabox.email/setup.sh | bash If you logged in as other than `root`, then the command is: curl -s https://mailinabox.email/setup.sh | sudo bash Hit enter key to initiate installation. Watch your screen, because it will ask you some question. See reference image below. [caption id="attachment_2437" align="aligncenter" width="841"] Reference Image: MiaB Question Installation Question No. 1[/caption] Hit `OK` on the first prompt and on the second, change the email address to your preferred one. Take note that whatever you put on that field will be you Super Admin user name. [caption id="attachment_2438" align="aligncenter" width="857"] Reference Image: Miab Question 2 MiaB will ask for your E-Mail Addres.[/caption] To edit, hit backspace to delete all contents and type in your preferred email. You can add more after the the installation process. Once done, hit TAB key to move the cursor to `OK`, once there hit Enter Key. This next page will pop-up after the above.

      [caption id="attachment_2439" align="aligncenter" width="871"]Reference Image: MiaB suggesting hostname to use MiaB Hostname Setup[/caption]

      Check the value and edit as needed. In my case, it’s box.chubbable.com and this value is also the name of my droplet on my DigitalOcean dashboard.

      When satisfied hit tab key to select OK, and finally hit enter key and installation continues.

      Another prompt will pop asking your geographic area, just do so using your up/down keys to select your area/continent and hit tab to select OK button. Next prompt should be asking your Time Zone, so select your Country’s capital City and hit OK. Installation continues with white texts on black screen background. The process will take a while but won’t take more than 15-minutes. Watch your screen though, because the install script will prompt you for your admin password.

      [caption id="attachment_2434" align="aligncenter" width="817"]Reference Image: Mail in a Box Installation Process The MiaB script is doing its thing.[/caption]

      On the password prompt, you should enter your admin password twice. Take note, when you type in your password, it won’t be printed on your screen. So type in your password slowly and surely.

      Once done, installation should be completed and you will be presented with your admin URL. See reference image below.

      [caption id="attachment_2435" align="aligncenter" width="693"]Reference Image: Mail-in-a-Box Installation Done Installation Done, Confirmed.[/caption]

      NOTE 1: If you had setup your DNS correctly, Letsencrypt SSL should be provisioned automatically for you during the setup. You will have to answer Yes to the license agreement and that would be it.

      In case not, and the MIAB script had used the self-signed SSL certificate instead, then no worries. You should still have the chance to install Letsencrypt SSL using the Admin Dashboard.

      NOTE 2: Below is the exact texts used by the script when asking your about Letsencrypt License Agreement.

      It is Let's Encrypt's terms of service agreement. If you agree, I can
      provision that TLS certificate. If you don't agree, you will have an
      opportunity to install your own TLS certificate from the Mail-in-a-Box
      control panel.
      
      Do you agree to the agreement? Type Y or N and press 
      : **NOTE 3:** After successfully provisioning your Letsencrypt SSL, you should now be able to login to your MIAB admin dashboard by using your full domain name. Example: `https://box.chubbable.com/admin` – and you should see the green padlock icon on your browser address bar. Which indicates that your SSL certificate is installed and working.

    Mail-in-a-Box Post-installation Setup

    So now that you’ve installed MiaB, you need further configuration, system checks and testing.

    To start off, you need to login to your admin dashboard. Your user name is the email you created during the initial installation procedure with MiaB. Once logged in, provision a new Letsencrypt SSL" and then log off. You need to clear your browser cache before logging in again, so your browser can detect the new SSL certificate.

    How Can I Install SSL Certificate after MiaB Installation

    To install Letsencrypt SSL to your MiaB Email Server, login as admin and do the following:

    1. System Menu
    2. Click on TLS (SSL) Certificates
    3. Click on Provision

    Then wait for the process to complete. After this, you should now have a Free SSL Certificate issued by Letsencrypt.

    [caption id="attachment_2443" align="aligncenter" width="861"]Reference Image: Provisioning a Letsencrypt SSL on MiaB Provisioning a Letsencrypt SSL on MiaB[/caption]

    How to Create Additional Users or Email in MiaB

    [caption id="attachment_2431" align="aligncenter" width="698"]Reference Image: Adding New Email Account Adding New Email Account[/caption]

    To add additional email/user to your primary domain, simply do the following:

    1. Click on Mail menu.
    2. Clock on Users
    3. Then type in the email address and the password. Leave Normal Users setting, and click Add User button.

      You should get a confirmation that you successfully added a new user. See reference image below.

    [caption id="attachment_2436" align="aligncenter" width="644"]Reference Image: Adding a New User Success Success! New User Added[/caption]

    It’s Wrap!

    There you have it! That’s how you build your own email server for free using Ubuntu Server and Open Source software like Mail-in-a-Box. There are others like it, i.e.; MailCow and iRedMail.

    In case you face some issues, feel free to ask below and I will try my best to answer them as soon as possible.

    There are other open source solution on the Internet, which I’m going to share with you soon, and will post a guide once I find time. As for now, Mail-in-a-Box is serving me well but it will soon reach its end-of-life cycle. This is so, because MIAB only supports Ubuntu 14.04 – support for this release will end on April 2019. Overall, it is the best free email server solution I’ve used and always been my recommended solution to clients.

  • Ultimate Guide on Remix OS Installation – USB or HDD Based

    Ultimate Guide on Remix OS Installation – USB or HDD Based

    UPDATED: 08-22-2017 – Here is the ultimate answer to your question on how to install Remix OS. I came up with various methods of installing this beautiful Linux-kernel based Operating System. This includes methods from the official site, along with other methods that some folks aren’t covering yet. You need to be a little tech savvy to follow on with this guide.

    Most tutorials out there, either written or video guide, usually covers the official and usual way of installing Remix OS on a Desktop PC. But with my post today, I’ll be covering different methods of Remix OS installation. This includes; direct hard drive installation, USB, VirtualBox, Dual-boot or Stand-alone type of installation.

    So if you really want to learn how you would do this, you need to be patient and should read this guide word-for-word to fully understand and install Remix OS successfully. I highly recommend that you follow the same setup or environment as what I’ve used in this particular post.

    Jump Links

    Remix OS Installation Requirements

    • At least 8GB USB Flash Drive for USB Installation
    • At least 32GB of Hard Drive Space for Windows-based Installation
    • At least 2 USB Flash Drives (if no CD/DVD ROM Drive), for Single-boot Installation
    • A dedicated HDD for Remix OS single-boot installation
    • Hiren’s Boot CD or any partition tool you prefer

    What is Remix OS

    Remix OS – is an Android™ OS for Desktop PCs, that support Legacy BIOS and UEFI boot methods. You can also run the OS on ARM devices. As of Saturday, 03 December, 2016 – Remix OS with Version 3.0.207 is now powered by Android™ Marshmallow.

    With this Operating System, you can run any of your favorite Android Apps right on your PC. You don’t need to install another software or emulator just to run your most loved Android apps.

    Game or productivity apps, you name it, it can run on your Desktop. No need for that sluggish and bloated software like BlueStacks – sorry no offense, but this is how I felt for this software.

    FYI, BlueStacks is an Android emulator for PC.

    This OS was created by Jide Technology – a company founded by three ex-Google engineers, to fulfill the goal of unlatching Android’s potential in this era of computing. Later, the Jide team was joined by Android-x86 founder, Chih-Wei Huang as x86 Technology Lead. In case you didn’t know yet, the Android x86 project is an Open Source project that ports the Android OS to Desktop PCs. That said, Chih-Wei Huang should play a vital role in the further development of Remix OS.

    Why You’d Want To Use This OS?

    Well I’m not saying this for everyone, but I should say that Remix OS is fast and efficient. I don’t have the numbers or benchmark score, but I can say that this OS is fast. You can install it on an old PC laying around and still you can feel the difference compared to Windows.

    I’ve tested this on a Virtual Machine with 1GB of memory, and still this OS was responsive. Except when I launched several Apps at the same time, it becomes sluggish and almost hung up. Of course that is due to memory starvation. But what I’m trying to prove is, the interface itself is very responsive. I’m on a Linuxmint machine that I use everyday, and I usually notice a slight delay when launching Chrome, my file manager Nemo and some other Apps that I use everyday.

    Also, why you wanna use this is because of Google Play. I mean come on… Android has thousands of FREE Apps at your disposal, and you can use and download these in Remix OS. Fan of COC? Well you can perfectly run this Android game on your PC, bigger screen!

    And if you compare Remix OS against other alternatives out there (Android-enabled devices or softwares), still it beats the crap out of them. See image below to show how fast Remix OS run, on an Intel i5 processor.

    The screenshot above shows the speed gaps between BlueStack 2 on i5, Samsung Galaxy Note 5 and other devices, which can obviously seen on the photo. The photo by the way is a screengrab from Remix OS‘ website.

    My second consideration is ease of installation and use. Unlike Windows, you can use this OS right after you have installed it. You don’t need to install additional drivers or softwares just to tell that it is operational.

    If you need additional apps, just launch the Chrome browser and search for the app you would want. Or use the Google Play menu, like you always do on your Mobile, to search for your favorite apps.

    Another consideration why I would want to use this, is because it’s FREE. Yes, it is! Unlike Windows (comparing free vs paid), that you got to have a license for it to be installed. Not unless you’re a pirate and fond of using pirated copy of this OS along with malware/spyware installed with it. Take note though, that some Apps are not free. Especially those premium Apps and Apps with "In-App Purchase" feature.

    You could actually use this OS in an enterprise environment like; Call Centers, Offices or Educational Institutions. You can set this up on a cheap ARM devices and mount it behind a LCD screen. Have you seed one of those setup? I like to setup one, but don’t have the right budget for it.

    Now, here comes the nitty-gritty part of this post. Check further below.

    Official Method of Installing Remix OS

    I know this method has been covered several times already and posted all over the Internet.

    But for the sake of this tutorial, I’m going to cover this and should be explained step-by-step to help my fellow noobs out there.

    Noobs, be proud and follow this guide.

    Note: Official method lets you place Remix OS on your hard disk as a Dual-boot with Windows 7, Windows 8 or Windows 10 and on a USB 3.0 Flash Drive.

    Jide Technology recommends USB 3.0 for better performance. USB 3.0 performs faster than USB 2.0 in terms of transfer speed (640MBps).

    I was able to run Remix on a 32GB and 8GB without issues. Only thing is, it takes a while for the first boot (15-20 minutes).

    For Hard Disk Installation – Windows Based

    The current installer tool supports Windows 7, Windows 8 or Windows 10, no Mac or Linux support yet. You need to have at least 8GB of hard drive space.

    Note: You really don’t have to create a separate partition or dedicated hard drive for this install method. Why so? Because Remix will just copy the image file to a folder in your Windows C: drive, along with the necessary files on the other parts of the drive. Fairly simple to install. You can easily remove/uninstall it later when you need to.

    Installation Overview

    1. Download the zipped package for Remix OS. This includes the Remix OS ISO file and the .exe Install Tool.

      Sample file names:

      • Remix_OS_for_PC_Android_M_64bit_B2016112101.iso
      • Remix_OS_for_PC_Installation_Tool-B2016080802.exe
    2. Run the exe installer tool and follow the instructions to install Remix OS on your PC’s hard drive.

    3. Reboot your PC.

      For UEFI, press special key (F12 for Dell, F9 for HP, F12 for Lenovo, Option Key for MAC) while booting to enter boot menu and ensure that Secure Boot is disabled.

    4. Select Remix OS from the Windows Boot Menu – Installation should continue in the background.

    The Step-by-step Guide

    Here comes the action.

    Download and Extract Remix OS

    Download the package from this page and extract somewhere convenient on your hard drive.

    You should see several files after extracting the zip file. In my case, I’ve got these:

    • How_to_launch_Remix_OS_for_PC.txt
    • md5sum.txt
    • Remix_OS_for_PC_Android_M_64bit_B2016112101.iso
    • Remix_OS_for_PC_Installation_Tool-B2016080802.exe

    Note: You should have disabled Hide extension for known file types in Folder Options menu, under Windows OS.

    Step 2: Launch the Installer

    Run the exe installer tool and follow the instructions to install Remix OS on your PC’s hard drive.

    You could right-click on the .exe file and choose Run as administrator or simply double-click the file to run it, then choose Yes on the next pop-up dialog.

    You should now see the Install Wizard window, you should browse to the Remix OS ISO file, and choose Hard Disk for Type. Target drive could be C: (yes folks!) or another unused partition on your hard drive.

    If you wonder why install Remix OS on C: drive? Well, with the installer tool, it is safe to install on the same partition as Windows sits on.

    Why so? Because Remix OS will create a folder for itself, for its exclusive use. It will not overwrite any of the Windows files nor wipe out your existing partition. Remix OS will create a virtual file system in the form of data.img file. This file should contain your "Internal Storage" device – that appears as storage in Android devices. So it’s perfectly safe to use the C: drive, provided that you have enough space for Remix OS to use. You could use a 32GB, 16GB and 8GB as storage device, the install should prompt you to choose one.

    Checkout how easy it is to remove/uninstall Remix OS, using this guide.

    [caption id="attachment_2361" align="aligncenter" width="580"]Screenshot - Remix OS Windows Installation Screenshot – Remix OS Windows Installation[/caption]

    Click OK, and you should be able to choose your System Size, depending on your free hard disk space, you could choose from; 8, 16 or 32GB system size. If you have the sufficient space, choose 32GB – which is the recommended one.

    Click OK again to start the install process. Once done, the Wizard will prompt you to reboot.

    Reference Image: [caption id="attachment_2363" align="aligncenter" width="592"]

    Screenshot - Remix OS Installed Alongside Windows Screenshot – Remix OS Installed Alongside Windows[/caption]

    Note: You can actually choose C: drive, it’s safe to do that, since Remix OS will copy the files to a directory name RemixOS.

    Step 3: Reboot your PC.

    For UEFI, press special key (F12 for Dell, F9 for HP, F12 for Lenovo, Option Key for MAC) while booting to enter boot menu and ensure that Secure Boot is disabled.

    Once you get pass the POST section of the boot sequence, you should get a Windows Boot Manager menu looking like this:

    [caption id="attachment_2364" align="aligncenter" width="880"] Screenshot - Windows Boot Manager Screenshot – Windows Boot Manager[/caption]

    Step 4: Now select Remix OS and hit ENTER key.

    You should now see the boot logo with black background and white text. This might take a while, but once you get pass this screen, you should be prompted to select your preferred language. See image below.

    [caption id="attachment_2365" align="aligncenter" width="527"] Screenshot - Remix OS First Welcome Screen Screenshot – Remix OS Language Selection Screen[/caption]

    Follow the rest of the prompt; agree to to User Agreement, Setup WiFi (or Skip this), add some of your favorite apps, then agree to Activate Google Play.

    And that would be it! You should now installed Remix OS alongside Windows as a dual-boot system.

    Very simple process and not too challenging, right? Right!

    But what if you want to use Remix OS as your core OS, leaving you the question…

    How to install Remix OS as my primary or standalone OS?

    Well, you’re just in luck! Because the guide is actually included in this post. Read on.


    For USB Installation – Windows Based

    To install Remix OS on a USB Drive, simply follow the steps mentioned above. Simply select USB drive as your Disk Type, then select the drive letter for the USB.

    See reference image below.

    [caption id="attachment_2367" align="aligncenter" width="527"] Screenshot - Remix OS USB InstallationScreenshot – Remix OS USB Installation[/caption]

    Uninstall or Remove Remix OS

    I’m sure most folks out there will ask this same question after trying out Remix OS on their Windows machine.

    How to uninstall/remove Remix OS?

    To remove Remix OS from your system, simply run the UninstallRemixOS file from C:\RemixOS</code> folder. It should delete the files and the entry from the Windows Boot Manager.

    Then delete the data.img file, along with the .disk folder. This should free up the space consumed by the OS.

    Reboot your PC and done!

    Single-boot or Standalone Installation

    Actually this is not an official guide for installing Remix OS to hard drive without Windows. Jide Technology recommends to use the installer version, which let you install ROS alongside Windows 7, 8, or 10. But if you want to follow on, then let's get started.

    This is for a single-boot only install method. You need to use the .iso file that came with the downloaded .zip file.

    Single Boot Requirements

    • You need a separate HDD - or better of, another set of PC.

    • You also need a 3rd-party partitioning software - This doesn't need to be a paid or commercial one. You can download free tools like Hiren's Boot CD. It's a live CD ISO which you can use to partition/format your hard disk in preparation for the OS installation. You could use similar tools if you want.

    • Burned ISO for Remix OS 3.0 64-bit - Build No. B2016112101 - or you can use the most recent one. But for the sake of this guide and to avoid issues, please use this build. Burning the ISO to a physical CD is beyond the scope of this guide.

    • USB Drive if you don't have a CD Burner. Use Rufus to write the ISO to USB.

    • PC with Legacy BIOS - yes, I am still using this. For UEFI users, I am not sure if this guide would work for you.

      Note (Added on 08-22-2017): I've tested the 64-bit Package version 3.0.207 on my Legacy BIOS enabled system, powered by AMD Sempron, and it did not worked out of the box. I got the Remix OS Black Screen Issue. The 64-bit version is supposed to work on systems using legacy BIOS to boot their OS, but in my specific case, it didn't. On a side note, perhaps you should use the 32-bit package strictly for older systems using legacy BIOS, to avoid installation and boot issues.

      • *

    Install Overview

    Quick info on how to install ROS, NOT dual-boot. Take note, I tested the latest build version 3.0.207 (as of August 22, 2017), and all worked fine using this guide.

    Note: To avoid headaches, installation and boot issues on older systems using Legacy BIOS boot, use the 32-bit package.

    1. Boot from Hiren's Boot CD, then choose the Parted Magic.

    2. Launch GParted and create a new Partition Table (will wipe the disk out), then create a new ext4 partition, using all available space. Save/Apply and Reboot.

    3. Boot from Remix OS ISO, set boot flag to INSTALL=1

    4. Installation

      • Choose your target drive (prepped in Step 2 above)
      • Choose "Do Not Format".
      • Choose to "install Grub Boot Loader".
      • Choose if you want to enable read/write for /system folder
      • Installation should now take place.
      • Reboot
      • Glowing Remix OS Boot Logo should appear. This should take a while, around 15-minutes in my single-drive setup.
    5. First Boot and Setup

      • Welcome Screen
      • Select your language
      • User agreement
      • Wifi setup
      • Recommended App install
      • Activate Google Play™
      • Done!

    Also Read: Endless OS Installation - It's another Linux-based OS

    The Step-by-step Procedure

    In case you no longer use CD/DVD Drives, then you must have 2 USB drives. One for Hiren's BootCD (1GB at least) and another for Remix OS (at least 2GB).

    1. Step 1: Boot from Hiren's Boot CD, then choose the Parted Magic.

      You can use similar tools, but for this guide I'd be using Hiren's Boot CD, because it has all the features I need, not only useful with this setup.

      Download, extract and burn the .iso file to a CD, or use Rufus to write the file to a USB Drive and boot from it.

      Note: Download link is at the bottom of Hiren's Download page.

      I'll be using Parted Magic, which is included in the live cd. It has GParted and Clonezilla with it. It is basically a Linux with Desktop environment, so you can use it with a graphical interface and also includes a terminal.

      So boot from the CD or USB, then choose "Parted Magic".

    2. Step 2: Launch GParted and create a new Partition Table (will wipe the disk out), then create a new ext4 partition, using all available space. Save/Apply and Reboot.

      In case you still have your old partitions, you can simply remove/delete all those by creating a new Partition Table. Set the type to msdosand it should wipe all the partitions out. I've tried and tested GPT but it didn't work in my case (legacy BIOS boot).

      Then right-click on the gray unallocated area and choose to create a new EXT4 partition. See video.

      Once done, apply and save. Logout and shutdown your PC.

      Turn it on again and switch to the Remix ISO Installer, then follow below step.

    3. Step 3: Boot from Remix OS ISO, set boot flag to INSTALL=1

      Once Grub Boot Menu shows up, press e while Resident Mode is high-lighted. This should enable you to edit the boot flags.

      Notice that SRC= DATA= CREATE_DATA_IMG=1 text?

      Change that to SRC= DATA= INSTALL=1 and hit ENTER key.

      Install wizard screen (with blue background) should appear, now follow next steps below.

    4. Step 4: Installation - Choose options

      • Choose your target drive (prepped in Step 2 above), usually it's sda1 - for single partition drive with no other disks attached.

      • Choose "Do Not Format".

      • Choose to "install Grub Boot Loader" - don't be misled by old tutorials and out-dated guides out there. Remix OS 3.0 perfectly installs Grub without issues, using the ISO method.

      • Choose if you want to enable read/write for /system folder - in my case I chose NOT to speed up the process.

        Hit ENTER key and installation should now take place.

      • Eject the ROS installer, then Reboot.

      • Glowing Remix OS Boot Logo with black background should appear. This should take a while, around 15-minutes in my single-drive setup.d. After this, it should take you to the welcome screen. You are nearly there!

    5. Step 5: First Boot and Setup - finally, set the following:

      • Select your language
      • User agreement
      • WiFi setup
      • Recommended App install - you'll get this screen when your system is connected to the Internet.
      • Activate Google Play™

      Done!

      Note: One more thing that you need to set. When you check on Settings > Storage & USB > Portable storage, you'll notice a "Corrupted Disk Error". This is probably a bug, since it showed up on my several test setups (VirtualBox, USB, Windows, Single-boot, EXT4/NTFS).

      Be Warned!!! - you should not take the Setup process because it will destroy your current instance. It will mess up your partition.

      What you should do is to turn-off the "auto mounting" feature, which is an experimental feature. Do do this, go to...

      Settings > Experimental Features > Enable disk partition mount

      ...and switch it OFF! Then restart your system. The next time you check that menu, it would be gone.

      Reference Image: [caption id="attachment_2368" align="aligncenter" width="575"]

      Screenshot - Remix OS Corrupted Disk Warning Screenshot - Remix OS Corrupted Disk Warning[/caption]

      I think this method is not that difficult right? You could also try doing this on a VirtualBox. It's more safe and quicker when just trying out the OS. Isn't this a good idea?

      Well, sure! But you might ask... How do I install Remix OS on a VirtualBox? -- It is much simpler than you might imagine, see details below. <ins class="adsbygoogle adblock-inContent" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-4203567920787191" data-ad-slot="7453360834">

    Remix OS Virtual Box Installation

    To install ROS on a Virtual Machine, you need VirtualBox or similar software, the ISO image and my favorite tool Hiren's Boot CD. You could use your own tool. The general idea of this is to use a third-party partitioning tool to prep your hard disk drive.

    If you read the hard disk single-boot method, then this guide would be easier for you to follow.

    Procedures

    1. Step 1: Create a new VM.

      Launch VirtualBox and click New, then fill out the following details:

      • Name
      • Type
      • Version
      • Memory Size
      • Hard disk

      If you would use the 64-bit version of Remix OS, then choose Other Linux (64-bit) from Version field.

      Minimum Memory Size should be 1024 MB, you could adjust as you wish, just make sure it's not more than half of your total system RAM.

      Click Create, then proceed to step two below.

      Reference Image:

      [caption id="attachment_2369" align="aligncenter" width="563"]Screenshot - VirtualBox Remix OS Installation VirtualBox Remix OS Installation[/caption]

      virtualbox_02
    2. Step 2: Create the Virtual Hard Drive

      Depending on your free space, you could create any virtual hdd you would want. If you have a dedicated partition or hdd just for VirtualBox to use, then you might want to use the full space available, leaving a little space for buffer. In my case, I chose to use 32GB Dynamically allocated VDI, because it's quicker to make than with Fixed Sized VDI.

      Note: Fixed Sized VDI will allocate and consume your hdd space though the disk would still be empty. So if you will create a 16GB VDI, it will show as 16GB file when you check its properties. While for dynamically allocated hard drive would not. It'll grow when you start putting file into the drive.

      Reference Image:

      Screenshot - Creating a Virtual Hard Drive for Remix OS
    3. Step 3: Configure VirtualBox and attach the Remix ISO, then boot from it.

      Click on the newly created VM and hit ctrl + s to launch the settings window. You could also access the page by right-clicking and then Settings.

      Go to System > Processor tab and select Enable PAE/NX.

      Next, go to Accelration tab and make sure Enable VT-x/AMD-V is tick/enabled. Click OK to save.

      Reference Image: [caption id="attachment_2374" align="aligncenter" width="620"]

      Screenshot - VirtualBox Settings for Remix OS VirtualBox Settings for Remix OS[/caption]

      Next, mount HBD ISO:

      Choose Storage, then click on the cd icon below your virtual drive, it should appear as empty. Then on the far right corner of the page, click on the drop-down with cd icon or with the label "optical drive". Choose Hiren's Boot CD and click OK. Now you're ready to start the VM.

      Reference Image:

      Screenshot - Loading Hiren's Boot CD

    4. Step 4: Start the Remix VM and follow the single-boot method above.

      Reference Image: [caption id="attachment_2372" align="aligncenter" width="627"]

      Screenshot - Starting the Remix OS VM Starting the Remix OS VM[/caption]

    Answers To Common Issues

    • Why would I install on C: drive, would it not mess my Windows partition?

      Answer: No, it wouldn't. Because Remix OS 3.0 would just copy the files on the C: drive inside a folder of it's own. It will use a file called data.img as its Internal Storage. Treat it like a container for your files. For the newbies, that data.img file is your hdd when using Remix with Windows.

    • Can I resize the data.img file larger than 32GB?

      Answer: Yes, of course. You need another tool for that, and you can use one for Windows or Linux. Guide on how you would increase the data.img size is not yet posted though. But I will soon write the guide for it.

    • Why first time boot takes long?

      Answer: That's pretty normal especially when using USB 2.0. It can be faster when using USB 3.0, or SSD Drives using Windows or Standalone Method. Another reason is because of data.img creation. I won't discuss the details, but what's actually happening behind that boot screen logo is... ROS is actually creating the file data.img, then formats it to a usable format (ext4), then lays out the necessary directories like; Photos, Documents and etc. Also, time it takes depends on your chosen system storage during the installation (8GB, 16GB, 32GB).

    • Can I just copy the "data.img" file from someone or somewhere else?

      Answer: Yes you could. Just slap in the data.img file inside the Remix OS folder and boot up. Make sure you do this right after the installation, before you make a reboot. Though, this might lead to security issues - when you copied or downloaded it from the Internet. You won't know that files might be included in that image.

    • My PC hung up during the first boot, any solutions?

      Answer: If you follow the Windows method, the installation might have been incomplete. You need to login to Windows again, uninstall and reinstall. Make sure to watch the window for errors or notices. Make sure that that you have an unformatted_data.img file before you reboot. If this still fails, edit the boot flags under Resident Mode and set flags to DATA= SRC=/RemixOS CREATE_DATA_IMG=1, hit ENTER then b once you get back to the previous screen. It should boot ok and create the image file, which should take a while.

    • I created a USB installer and used it to install Remix directly to my HDD - but grub won't boot?

      Answer: I've tested this several times on different methods, the USB installer won't install Grub perfectly. Using the ISO method works fine. Some old posts out there tells you to NOT install Grub and skip it, then install later, which will make life difficult for newbies. Well, in Remix OS 3.0 you don't have to do that. Just use the ISO, it should work.

    • I only have a single partition on my Windows machine, can I create a separate partition for Remix OS to use?

      Answer: Yes you can! Use any partitioning tools like GParted, it's included in; the Hiren's Boot CD, Linuxmint, Ubuntu Desktop Live CDs. You can use other tool like Easus Partition Manager. Gparted can be accessed via Once you made a new partition, format it to NTFS and mount it in Windows.

    It's a Wrap!

    If you follow this guide very carefully, you should have installed Remix OS successfully. But if you ran through issues and got stuck with something, feel free to ask below and I'd be glad to answer when I have the time.

    And if this guide worked for you, then pat yourself on the back. You have followed carefully. Please share to others too, okay?

    One thing... I've gone through several old posts which are no longer relevant to Remix OS 3.0. So I wrote this tutorial (my first ever post in 2017) for future readers. Some guides out there only works with the old version, some points to v2.0 and beta versions of Remix. So if you came across one, you may point/link to this post.

  • How to Build Your Own Cloud Storage Server using Nextcloud and Ubuntu

    How to Build Your Own Cloud Storage Server using Nextcloud and Ubuntu

    Once again I made a newbie-friendly and easy-to-follow guide for self-learners like myself. I'm not an expert, but I have enough knowledge to get the job done. So jump on in!

    This time I made a step-by-step tutorial in building your own cloud store file hosting and sharing service using free and open-source software called Nextcloud. So in this post, I'll teach you how you would install Nextcloud on your own and private server or VPS using Ubuntu 18.04 Linux Server.

    Note: Throughout this post, I mean Nextcloud when I say NC.

    Jump Links

    Things Needed in Building Your Own Cloud Storage Server

    Before going further with this guide, make sure you have the following stuffs hand. Domain Name (if you don't have it yet). Use a sub-domain to host your cloud server (i.e nc.chubbable.com) Server or VPS from DigitalOcean At least 2GB of RAM. A minimum of 4GB RAM if you want to use Online Office functionalities (Spreadsheet and Docs editing and sharing.) At least 25GB of hard drive space. * Nextcloud software suite (server/client).

    NOTE: Domain/Registrar Setup is not covered in this post.

    What is Nextcloud?

    Next Cloud - stylized as Nextcloud is a set of client/server software for building your own file sharing/hosting service and private cloud storage system. It's like Dropbox, pCloud, Mega, Google Drive or OneDrive. However Nextcloud is a self-hosted solution, that is free and open source. It is the opposite of the aforementioned file hosting/sharing services, which come in a monthly paid plan. With NC, you only pay for the hosting service of your VPS or Dedicated server. Or you pay for nothing at all, when using within your LAN.

    NC is an open source software licensed under ‎AGPLv3, and constantly being improved and developed by Nextcloud GmBH and a community of volunteer developers.

    NC is a set of client/server software that you can use in building a file sharing or hosting service or your private cloud storage solution. The client software is used to sync files across your devices, it can run on iOS, Android, macOS, Linux and Windows. The server software can only be installed on a Linux environment. However, you can also run it inside a virtual machine guess, where the host is either Windows or macOS.

    NC is a fork of ownCloud by the original developer Frank Karlitschek. Frank (born 25 July 1973) is a German open source software developer living in Stuttgart, Germany. Fork in software engineering means a copy of a source code from a software package and development on it is independent. It becomes a separate piece of software,

    Related to ownCloud: HTPC File Server Combo Using ownCloud

    Personally, I'm using Nextcloud to share media files across devices within my LAN. I used it with Kodi and other Media Center App.

    Various Ways of Creating a Nexcloud Instance

    Building your own file hosting/sharing using Nextcloud is not limited to one option. There are several ways of setting it up depending on your environment, needs or technical skill.

    Below are options in setting up your own Nextcloud Server:

    Manual Installation on Linux Server

    If you're a bit techie, then probably you would opt to install Nextcloud on a dedicated server or VPS. You can host the server either on cloud or on a local machine within your local network.

    This option in my opinion lets you have more control over the whole Nextcloud setup. You can configure it the way you want it, tweak your settings and a lot more.

    Shared Hosting Installation

    One easy way of deploying NC for online use is to set it up on a shared hosting service. You would only need a hosting account, domain name, NC files, database and kaboom! Done!

    You won't be going through the seemingly daunting task of manually installing NC from scratch.

    You won't need to install Apache, MySQL, PHP, modules and dependencies yourself.

    In my opinion, this is not the best option. But for self-learners like myself, you can easily setup NC on a shared hosting environment. However, one caveat I found and why I mentioned it is not the best option is - server resources are limited or throttled once the server or your account had reached a certain threshold.

    Nextcloud on Virtual Machine

    Another easy way of building your own GoogleDrive or Dropbox-like service is through a Virtual Machine. You can do this on a Windows machine.

    Tech and Me maintains a VM designed for less technical users to get Nextcloud up and running. It is built on Ubuntu Linux and is fully set up and configured with a secure SSL/TLS connection.

    To get NC running, you just need to download the pre-configured VM and run it with VirtualBox.

    Once caveat I find with this option is that, you can't easily share your files over the Internet, especially if you're your on dynamic IP address and you're on a LTE network. Punching through closed ports and firewall can really be challenging for less technical users.

    Manually Installing Nextcloud 13 on Ubuntu 18.04 Bionic Beaver

    Setup Overview: How to Install Nextcloud on Ubuntu Server

    Phase 1: Ubuntu Web Server Preparation

    Phase 1 involves server preparation for Nextcloud's exclusive use. Take note that only Nextcloud should only be the sole Web App running on your server. No other web app or whatsoever.

    1. Create a Droplet on DigitalOcean
    2. Setup LAMP Server
    3. Secure MySQL
    4. Setup Apache Virtual Host for Nextcloud
    5. Install Required Softwares/Dependencies

    Phase 2: Nextcloud Installation

    Phase 2 involves the actually steps in installing Nextcloud on Ubuntu Server. Below is the overview of the procedure.

    1. Download and extract Nextcloud Installation Files
    2. Copy Nextcloud files to your chosen web root
    3. Apply necessary file and folder permission to your web root
    4. Create DATA folder and apply proper file/folder permission
    5. Create Database for Nextcloud and a user for it
    6. Initiate installation wizard using your favorite browser

    Phase 1: Web Server Preparation

    I highly recommend that you use a sub-domain to host your NC, so you can still use your primary domain for other purpose (i.e Web Site).

    Step 1: Create a Droplet on DigitalOcean

    Login to your DigitalOcean account and create the server from your dashboard. See referene image below.

    Reference Image 1:

    [caption id="attachment_2454" align="aligncenter" width="703"]VPS Creation in DigitalOcean - Screenshot Ubuntu 18.04 VPS Creation in DigitalOcean[/caption]

    Choose an image. Under Distribution tab select Ubuntu, then click on the drop-down button. Then select 18.04 x64

    Reference Image 2: [caption id="attachment_2455" align="aligncenter" width="671"]Screenshot - Creating Droplet in DigitalOcean Creating a Droplet in DigitalOcean[/caption]

    Choose a Droplet size. A 1GB RAM would be enough for this tutorial, only IF you are wanting to test the install guide. But for a production server with busy traffic and multi-user environment, I recommend to start with a 4GB Droplet for a decent and optimum performance. See reference image below.

    Reference Image: [caption id="attachment_2456" align="aligncenter" width="551"]Screenshot - Choosing a Droplet Size in DigitalOcean Choosing a Droplet Size in DigitalOcean[/caption]

    NOTE: If you'd like a GoogleDrive-like function, where you can share Google sheets and docs for team collobration, then a 4GB RAM is the minimum.

    Install Collabora APP on NC, for team-based collab and editing.

    Collobora is a for a powerful LibreOffice-based online office suite with collaborative editing, which supports all major document, spreadsheet and presentation file formats and works in all modern browsers.

    Choose a Regions closest to your location:

    • New York
    • San Francisco
    • Amsterdam
    • Singapore
    • London
    • Frankfurt
    • Toronto
    • Bangalore

    Add your SSH key. Not sure how to create and add your SSH? Then watch one of these videos:

    Next, Choose a hostname. It should be a fully qualified domain name. In my example, I used nc.chubbable.com. This is the hostname of my server and at the same time, the domain name for my NC installation. See reference image below.

    Reference Image: [caption id="attachment_2457" align="aligncenter" width="593"]DigitalOcean Droplet Creation - Last Step Final Step in DigitalOcean Droplet Creation[/caption]

    Finally, click on the CREATE button and wait for the process to finish. Once done, take note of your server IP address. You'll be using if when logging in via SSH.

    Registrar Settings

    Don't forget to change yoiur Registrar setting and point your DNS Servers to DigitalOcean, or as instructured by whoever is your provider.

    If using DO, go to your Registrar's Admin Dashboard and change your domain name servers to the following:

    ns1.digitalocean.com
    ns2.digitalocean.com
    ns3.digitalocean.com

    Propagation may take up to 72-hours. But in my experience with Gandi and Namecheap, It only takes 2-3 hours, for full propagation.

    Once complete, you can visit your server by typing your domain name. Just make sure that you named your Droplet the same as your domain name, plus the hostname (i.e. nc.chubbable.com)

    Tools To Check DNS Propagation

    You can use https://www.whatsmydns.net/ to check how your DNS config is doing.

    Reference Image (NS Lookup): [caption id="attachment_2467" align="aligncenter" width="766"]Screenshot of NS Lookup Tool NS Lookup Tool[/caption]

    Reference Image (A Record Lookup): [caption id="attachment_2468" align="aligncenter" width="776"]Screenshot of A Record Lookup tool A Record Lookup Tool using WhatsMyDNS[/caption]

    Step 2: Setup LAMP Server

    Now we created a new Ubuntu 18.04 VPS, next is to setup the Web Server using Apache, MySQL and PHP. Don't get intimidated by this, since the setup woulld be easy and semi-automated. Sort of.

    So let's get started.

    Login to your Ubuntu Droplet via SSH:

    ssh [email protected]

    Once logged in as root, create a new user account which is going to be your primary user account.

    Invoke command below:

    adduser your-chosen-name

    ...then follow the prompt. Take note, you must enter yoiur password twice.

    Once completed, make the newly created user account as a sudoer. To do that, simply add the user-account to the sudo group.

    usermod -aG sudo your-user-account

    Next, copy your SSH public key to your newly created user account's home folder. For this, we need to copy the whole .ssh folder recursively. Why so? Because we need the authorized_keys file for the newly created account. It holds the SSH public key which is needed to access the server via SSH with the newly created user account.

    Command would be (while logged in as root):

    cp -r /root/.ssh/ /home/user-name-here/

    Then:

    chown -R your-user-name:your-user-name /home/user-name/.ssh/

    In my case:

    chown -R chubbable:chubbable /home/user-name/.ssh/

    Set proper read/write permission:

    chmod 700 /home/user-name/.ssh/
    chmod 600 /home/user-name/.ssh/authorized_keys

    In my case:

    chmod 700 /home/chubbable/.ssh/
    chmod 600 /home/chubbable/.ssh/authorized_keys

    Once done, you should be able to login via SSH using the newly created user account. Next we need to disable root login and only allow your user account to access your server via SSH. We need to do this for security measure.

    While still logged in as root, do the following:

    nano -c /etc/ssh/sshd_config

    Around line 32, look for PermitRootLogin yes and changed it to PermitRootLogin no

    Save and exit:

    ctrl + o

    Make sure you save the file with the following file name, then hit Enter Key. ctrl + x to exit the editor:

    File Name to Write: /etc/ssh/sshd_config

    Now, restart SSH Server so the changes will take effect:

    systemctl restart sshd

    Next, let's try the new setup. Exit SSH and log in again, but this time use your newly created SSH user name:

    ssh [email protected]

    At this point, you can no longer use root but the newly created user, to login to your server.

    Why root over SSH is bad?

    There are a lot of bots out there which try to log in to your computer over SSH. These bots work the following way.

    They execute something like ssh root@$IP and then they try standard passwords like "root" or "password123". They do this as long as they can, until they find the right password. On a world wide accessible server you can see a lot of log entries in your log files. I can go up to 20 per minute or more.

    When the attackers have luck (or enough time), and find a password, they would have root access and that would mean you are in trouble.


    Step 3: Configure MySQL for Basic Security

    On this step, we'll configure MySQL for production use. You need to log in to your server using the user-name to made previously. All commands from now henceforth should be prepended with sudo.

    Command:

    sudo mysql_secure_installation

    This will take you through a series of prompts where you can make some changes to your MySQL installation’s security options.

    The first prompt will ask whether you’d like to set up the Validate Password Plugin, which can be used to test the strength of your MySQL password. Regardless of your choice, the next prompt will be to set a password for the MySQL root user. Enter and then confirm a secure password of your choice.

    From there, you can press Y and then ENTER to accept the defaults for all the subsequent questions. This will remove some anonymous users and the test database, disable remote root logins, and load these new rules so that MySQL can implement the changes.

    Step 4: Setup Apache Virtual Host for Nextcloud

    Create the following directory structure, if you don't have it yet.

    /var/www/nc.chubbable.com/public_html
    /var/www/nc.chubbable.com/logs
    /var/www/nc.chubbable.com/data

    Where:

    • public_html - will hold the NC files.
    • logs - will hold the log files.
    • data - will hold user-data.

    To create those directories in one command:

    mkdir -p /var/www/nc.chubbable.com/{public_html,logs,data}

    Then create access.log and error.log files:

    touch /var/www/nc.chubbable.com/{access,error}.log

    We now need to create a .conf file for Apache Virtual Host.

    Change directory to Apache's sites-available directory:

    cd /etc/apache2/sites-available

    Create a .conf file for your domain (change nc.chubbable.com to your domain):

    sudo nano nc.chubbable.com.conf

    ...and copy/paste the following (change nc.chubbable.com to your domain):

    <VirtualHost *:80>
        ServerName nc.chubbable.com
    
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/nc.chubbable.com/public_html
    
        ErrorLog /var/www/nc.chubbable.com/logs/error.log
        CustomLog /var/www/nc.chubbable.com/logs/access.log combined
    
    <Directory /var/www/nc.chubbable.com/public_html>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
        Satisfy Any
    </Directory>
    
    <IfModule mod_dav.c>
    Dav off
    </IfModule>
    
    SetEnv HOME /var/www/nc.chubbable.com/public_html
    SetEnv HTTP_HOME /var/www/nc.chubbable.com/public_html

    Save the file and exit:

    ctrl + o

    ...then hit ENTER key. Type ctrl + x to exit.


    Next, while still in sites-available directory, Enable your newly created virtualhost and disable the default one. Invoke these commands in succession.

    sudo a2ensite nc.chubbable.com.conf
    sudo a2dissite 000-default.conf
    sudo systemctl restart apache2

    At this point, you can test your domain to confirm it's working. Launch a browser and visit your IP address or domain name, if you see a 404-error, then that's fine. That a good indication your virtualhost is working. The reason for the error is because we disabled indexing in our virtualhost config and our web root is empty at this point.

    Step 5: Install Required Softwares/Dependencies

    While php7.2 comes with Ubuntu 18.04, PHP-mcrypt which is needed by NC, has been removed in php 7.2 - so we need to manually install it on our server.

    Installing mcrypt in Ubuntu 18.04 php7.2

    To install mcrypt in php7.2, first install the requisites:

    sudo apt-get install php-dev libmcrypt-dev gcc make autoconf libc-dev pkg-config

    Then install mcrypt:

    sudo pecl install mcrypt-1.0.1

    Just press enter key, when it reached the point where libmcrypt prefix is being asked.

    Enable extension for apache:

    echo "extension=mcrypt.so" | sudo tee -a /etc/php/7.2/apache2/conf.d/mcrypt.ini

    Restart apache:

    sudo systemctl restart apache2
    Install dependencies and enable modules

    Install NC dependencies, you can copy/paste;

    sudo apt install -y php7.2-gd php7.2-json php7.2-mysql php7.2-curl php7.2-mbstring php7.2-intl php7.2-imagick php7.2-xml php7.2-zip php7.2-curl php7.2-dom php7.2-ctype php7.2-iconv php7.2-json php7.2-bz2

    Enable modules needed by NC:

    sudo a2enmod rewrite expires headers env dir mime ssl

    And that's it with Phase 1, you can now proceed to the actual Nextcloud Setup Guide below.

    [adsense-responsive]

    Phase 2: Step-by-step Procedure

    On this phase of the guide, you will learn how to install Nextcloud on Ubuntu 18.04 Server (Bionic Beaver).

    We'll be using the latest version of NC, which is 13.0.4, as of July 3, 2018.

    Step 1: Download and extract Nextcloud Installation Files

    Login to your VPS via SSH and keep it open.

    Launch your favorite browser and go to Nextcloud download page and click on the Download button, then right-click on the big blue Download Nextcloud button from the pop-up and copy the link address. You'll need that when you download the Nextcloud file to your server. See reference image below.

    Reference Image 1: [caption id="attachment_2458" align="aligncenter" width="715"]Screenshot - Downloading Nextcloud Installer File Downloading Nextcloud Installer File[/caption]

    Reference Image 2: [caption id="attachment_2459" align="aligncenter" width="695"]Screenshot - Download Link for Nextcloud Server Installer Download Link for Nextcloud Server Installer[/caption]

    Go back to your commandprompt and paste in your copied download link along with wget command.

    So the command you'd type in is:

    wget https://download.nextcloud.com/server/releases/nextcloud-13.0.4.zip

    NOTE:

    At the time of writing, the latest version is Nextcloud 13.0.4.

    And the download link which was copied from the button is: https://download.nextcloud.com/server/releases/nextcloud-13.0.4.zip

    Next, extract the download file using unzip command. Yes, we use this command to extract downloaded Nextcloud installer file which is in .zip format.

    Extract the installer by invoking the following command ():

    unzip nextcloud-x.x.x.zip

    Or in this case:

    unzip nextcloud-13.0.4.zip

    A directory named nextcloud should be extracted from the zip file. To check the files, do a ls -la nextcloud command. All files including hidden files (.htaccess) should be listed.

    Step 2: Copy Nextcloud Files to Your Chosen Web Root

    Make sure you already created the needed directories before proceeding to this step. In my case I chose to use public_html as my web root and this is how I structured it, see below.

    /var/www/nc.chubbable.com/public_html
    /var/www/nc.chubbable.com/logs

    Where public_html will hold the Nextcloud files, while logs will hold Apache error and access log files.

    Let's proceed.

    Go back to your command-prompt and type in cd to make sure you're on your home directory.

    Then copy all the files and directories inside nextcloud using the Linux copy command. See below command.

    cp -ra nextcloud/. /var/www/nc.chubbable.com/public_html/.

    The command should copy all files/folders inside the nextcloud folder and puts them inside of public_html.

    For the sake of following through, I highly recommend that you use similar directory structure like I did in this tutorial. So you may just change nc.chubbable.com to your own domain or sub-domain.

    Step 3: Apply Necessary File and Folder Permission to Your Web Root

    Okay so we've copied all the installer files and it's now time to set the necessary and proper permission for the nextcloud web root.

    The goal here is to set apache user/group to own the files/folder and then set the needed read/write permission.

    To do just that, do the following:

    1. public_html directory and files within it should be owned by Apache user and group, so invoke the following command:

      chown -R www-data:www-data /var/www/nc.chubbable.com/public_html
    2. Set read/write permission for public_html folder.

      chmod 755 /var/www/nc.chubbable.com/public_html
    3. Set read/write permission for files and folders inside of public_html.

      Go to your public_html folder:

      cd /var/www/nc.chubbable.com/public_html

      Then set proper permission for files and folders, you should invoke the two commands below:

      For all folders recursively, type this and press enter

      find . -type d -exec chmod 755 {} \;

      For all files recursively, type this and press enter

      find . -type f -exec chmod 644 {} \;

    Step 4: Create DATA Folder and Apply Proper File/Folder Permission

    For very obvious reason, you need to put your user-data folder outside of your nextcloud web root - the public facing folder. You don't want smart people peaking in to your files do you? So move the DATA folder outside of nextcloud installation folder and place it else where.

    The best location to place your nextcloud data folder is anywhere outside your web root folder.

    For me, the best place and easiest would be the /var/www directory. In this guide, I'm going to place the data folder under /var/www/nc.chubbable.com directory in Ubuntu Linux.

    NOTE: In this Nextcloud Guide my web root diretory is under /var/www/nc.chubbable.com/public_html

    Okay, now we get to the actual step of creating the data folder. Follow steps below.

    1. While still logged in to your server, go back to your command prompt and type in:

      mkdir /var/www/nc.yourdomain.tld/data

      In my case:

      mkdir /var/www/nc.chubbable.com/data
    2. Next, set files and folder permission. The data folder should be owned by Apache user and group and that it should be writable the Apache user.

      To do just that enter following command (change domain part to yours):

      chown -R www-data:www-data /var/www/nc.chubbable.com/data

      Then set read/write permission:

      chmod 755 /var/www/nc.chubbable.com/data

      And that's it! Proceed to next step.

    Step 5: Create Database for Nextcloud and a User For It

    Using only the commandline, we will create a new database for Nextcloud and a database user.

    1. First login as root to MySQL.

      Do it like so:

      mysql root -u root -p

      After hitting enter key a password prompt should appear. Enter the password you created under the mysql_secure_installation step. Take note that typing your password won't be shown in screen.

    2. Create the database.

      After successfully logging in, create a database called nextcloud and same name for the database user.

      To do just that, do the following:

      create database nextcloud; 

      Hit enter key, then:

      grant all on nextcloud.* to 'nextcloud'@'localhost' identified by 'yourpasswordhere';

      Hit enter key, then:

      flush privileges;

      Hi entery key and quit MySQL:

      quit

    Step 6: Initiate Installation Wizard Using Your Favorite Browser

    So now that we have taken care of the requisites of Nextcloud Installation, you can now launch your favorite browser and start the Nextcloud Installation Wizard.

    Type in your Droplet's IP address or your Nextcloud domain name and hit enter key. You should be taken to a page like below. See reference image below.

    Reference Image: [caption id="attachment_2460" align="aligncenter" width="1321"]Screenshot - Start Page for Nextcloud Installation Wizard Installation Wizard Page for Nextcloud[/caption]

    On the installation wizard screen, you should fill in your:

    1. Nextcloud Admin User Name and Password.
    2. DATA folder location.
    3. Database user name and password.
    4. Database name.

    Once done, hit Finish Setup button to start the Nextcloud installation.

    If everything goes well, you should be presented with a page like you see on the image below. If so, then congratulations! You've installed Nextcloud on your Ubuntu 18.04 Server.

    Reference Image: [caption id="attachment_2461" align="aligncenter" width="1316"]Screenshot of Nextcloud first Login Nextcloud Successfully Installed![/caption]

    As you see in this post, it's not that difficiult to install. As long as you have the basic Linux skill and this guide, you can get through it.


    So there you have it noobs! I Hope this tutorial answered your question - "How to Install and Configure Nextcloud on Ubuntu 18.04 Server"

    Next, go through the post-install procedure.

    Nextcloud Post-installation Setup

    On this phase (post-installatin setup) of this tutorial, we should be dealing with caching setup for optimum NC performance, pretty urls and https. NC actually recommends going through these under Security & setup warnings page of NC Admin Dashboard (see reference image below) where it says...

    It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the Tips & Tricks section and the documentation for more information.


    Reference Image: [caption id="attachment_2462" align="aligncenter" width="1084"]Screenshot of Nextcloud Security & Setup Warnings Nextcloud Security & Setup Warnings[/caption]


    So on this part of the guide, we should tackle the following recommendations:

    1. Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root.

    2. Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the security tips. No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the documentation.

    3. The PHP OPcache is not properly configured. For better performance it is recommended to use the following settings in the php.ini:


    NOTE: We don't have to deal with recommendation No. 1 above since we've gone through it already under - Step 4: Create DATA Folder and Apply Proper File/Folder Permission.

    Setting Up PrettyURLs on Nextcloud

    PrettyURLs gets rid of the index.php part of all NC URLs to make the URl clean and neat. It should be very useful in sharing file links.

    For example:

    http://nc.chubbable.com/s/Sv1b7krAUqmF8QQ

    Instead of:

    http://nc.chubbable.com/index.php/s/Sv1b7krAUqmF8QQ
    Procedure

    Here goes the actual steps to enable pretty url in Nextcloud 13.0.4

    1. Login to your NC server via SSH.

    2. Edit config.php.

      To edit, go to your NC config directory:

      cd /var/www/nc.chubbable.com/public_html/config

      Then edit config.php

      sudo nano config.php

      Add below overwrite.cli.url:

      'htaccess.RewriteBase' => '/',

      In my case, I got this:

      'overwrite.cli.url' => 'http://nc.chubbable.com',
      'htaccess.RewriteBase' => '/',

      Then save the file:

      ctrl + o

      Reference Image: [caption id="attachment_2463" align="aligncenter" width="751"]Screenshot of Enabling Pretty URL Enabling Pretty URL[/caption]


      NOTE:

      If you installed NC on a sub-directory of your domain, then you should do like so:

      'overwrite.cli.url' => 'https://example.org/nextcloud',
      'htaccess.RewriteBase' => '/nextcloud',
    3. Finally run this occ-command to update your .htaccess file:

      sudo -u www-data php /path/to/nextcloud/webroot/occ maintenance:update:htaccess

      Note: Change the path to your own.

      In my case:

      sudo -u www-data php /var/www/nc.chubbable.com/public_html/occ maintenance:update:htaccess

      After that, changes are automatically applied to the .htaccessfile.


    Setup HTTPS

    For this part, we'll be using a free SSL for NC - it's called Letsencrypt SSL.

    To setup HTTPS on Nextcloud using Letsencrypt, do the steps below.

    Procedure
    1. Login to your server via SSH

    2. Go to Certbot website and download it.

      URL:

      https://certbot.eff.org/lets-encrypt/ubuntuother-apache

      On that page, dowload the certbot-auto script for use with Ubuntu 18.04. Just copy the code on that page.

      This step is specifically for Ubuntu 18.04.

      wget https://dl.eff.org/certbot-auto

      then set execute permission:

      chmod a+x certbot-auto

      certbot-auto accepts the same flags as certbot; it installs all of its own dependencies and updates the client code automatically.

    3. Create the SSL certificate and setup HTTPS.

      In my case:

      ./certbot-auto --apache --agree-tos --rsa-key-size 4096 --email [email protected] --redirect -d nc.chubbable.com

      To explain the switches a bit:

      • --apache - tells the script what web server you use
      • --redirect - tell the script to setup a permanent redirect from http to https
      • -d- tells the script to setup and create the SSL Certificate for the domain nc.chubbable.com
      • email - use to send notifications regarding your SSL status

    Configure PHP OPcache in Nextcloud for Better Performance

    Edit your php.ini file and enable these settings:

    • opcache.enable=1
    • opcache.enable_cli=1
    • opcache.interned_strings_buffer=8
    • opcache.max_accelerated_files=10000
    • opcache.memory_consumption=128
    • opcache.save_comments=1
    • opcache.revalidate_freq=1
    Procedure
    1. Open your php.ini file.

      sudo nano /etc/php/7.2/apache2/php.ini
    2. Search for [opcache] line in your php.ini file. Hit ctrl + w to bring up the search field and type in [opcache] then hit enter key.

      Then below [opcache], paste the following:

      opcache.enable=1
      opcache.enable_cli=1
      opcache.interned_strings_buffer=8
      opcache.max_accelerated_files=10000
      opcache.memory_consumption=128
      opcache.save_comments=1
      opcache.revalidate_freq=1
    3. Save the file:

      ctrl + o
    4. Restart apache2:

      sudo systemctl restart apache2
    5. Visit your NC Admin Dashboard and go to Settings > Basic.

      OPcache warning should no longer appear.

    Configure Memory Caching in Nextcloud

    For enhanced performance, NC recommends configuring a memory cache. So in this guide, I'm gonna be using APCu for initial caching, while Redis to manage file locking and distributed caching.

    You can opt NOT to do these on your NC instance.

    But if you intend to use NC on a busy and multi-user environment, where files and folders are expected to increase faster than you thought of, then you should configure caching.

    Procedure: APCu Installation on Ubuntu 18.04
    1. Install APCu in Ubuntu 18.04

      sudo apt install php7.2-apcu -y
    2. Add in config.php:

      'memcache.local' => '\OC\Memcache\APCu',

      In my case, I added the line below:

      'htaccess.RewriteBase' => '/',
    Procedure: Redis Installation on Ubuntu 18.04
    1. Install Redis:

      sudo apt install -y redis

      To check if installed successfully:

      redis-server -v

      Sample output:

      Redis server v=4.0.9 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=1bc80a08306a3efd

      Output above states that Redis was installed.

      Furthermore, confirm that Redis server is up and running as expected by checking for its listening socket on port number 6379:

      ps aux | grep redis

      Sample Output:

      redis 1501  0.0 0.3 51660 3732 ?  Ssl 15:36 0:00 /usr/bin/redis-server 127.0.0.1:6379

      And based on the output, it is running.

    2. Configure Redis to start on boot:

      The Redis server should start after reboot. When not, NC will throw an error, provided that you've already added the configs to config.php

      Make sure Redis start after reboot:

      sudo systemctl enable redis-server
    3. Configure Redis to use unix-socket instead of the default TCP socks. Unix sockets can get you some extra performance boost. I'm talking about microsecond benefits here. But still worth doing it, especially on a busy and multi-user deplyment.

      Edit /etc/redis/redis.conf

      sudo nano -c /etc/redis/redis.conf

      Around line 92, change port 6379 to port 0

      Around line 110, uncomment (remove # sign):

      unixsocket /var/run/redis/redis-server.sock
      unixsocketperm 700

      Then change unixsocketperm 700 to unixsocketperm 770

      Save and quit:

    4. Add the Apache user www-data to the redis group:

      sudo usermod -aG redis www-data

      At this point, you've already installed and configured Redis server on Ubuntu 18.04. Next step will be to add the configs to NC's config.php file.

      Proceed to the next step below to do just that.

    5. Add configuration to NC config.php file.

      With Redis configured, we can now add the caching configuration to the NC config file:

      sudo nano /var/www/nc.chubbable.com/public_html/config/config.php

      Then copy/paste these block of texts, below the APCu line we added awhile back.:

      'memcache.locking' => '\\OC\\Memcache\\Redis',
      'filelocking.enabled' => 'true',
      'redis' => 
        array (
        'host' => '/var/run/redis/redis-server.sock',
        'port' => 0,
        'timeout' => 0.0,
        ),

      Save the file and exit.

      Reference Image: [caption id="attachment_2464" align="aligncenter" width="751"]Screenshot of APCu and Redis Configuration for Nextcloud APCu and Redis Configuration for Nextcloud[/caption]

    6. Reboot your NC server.

      After rebooting, login to your NC admin dashboard and check on the Security & setup warnings page.

      Go to Settings > Basic Settings menu from the left pane.

      Warnings should have been cleared and says All checks passed

    File Syc Client

    Now that you have installed and configured NC, you can now start adding your files. But before you can do that, you need to first install the NC Sync Client App. It's like a Google Drive or Dropbox Sync App.

    Go to:

        https://nextcloud.com/install/

    ..and download the Desktop for your chosen OS or Mobile Client.

    Reference Images:

    [caption id="attachment_2469" align="aligncenter" width="805"]Screenshot of Nextcloud File Sync App Download Page Nextcloud File Sync App[/caption]

    [caption id="attachment_2470" align="aligncenter" width="597"]Screenshot of Nextcloud Desktop Sync Client App Download Page Nextcloud Desktop Sync Client App[/caption]

    [caption id="attachment_2471" align="aligncenter" width="741"]Screenshot of Nextcloud Mobile File Sync App Download Page Nextcloud Nextcloud Mobile File Sync App[/caption]

    It's a Wrap!

    So there you have it folks!

    If you encounter issues while following this guide, please don't hesitate to post your comments below. I will try my best to answer them when I have the time.

    If it worked for you, then post a comment as well, and say "thank you, it worked!".

    Building your own cloud storage server is not that hard as you thought. All you need is a step-by-step guide written by newbie for newbies. However, you definitely need some Linux skills especially if you want customize the system, or there would be a need for extra-special deployment or troubleshooting needs. There will be no one-size-fits-all tutorial for that.

  • How To Install uniCenta 4.4.2 On Linuxmint 19 (Mate Edition) or 18.04.1 LTS (Bionic Beaver) Desktop Edition

    How To Install uniCenta 4.4.2 On Linuxmint 19 (Mate Edition) or 18.04.1 LTS (Bionic Beaver) Desktop Edition

    Another step-by-step guide on how to install a Point-of-Sale software called uniCenta (v4.4.2), you need; 64-bit supported OS, Java SE Runtime Environment, and the latest version of uniCenta installed. v4.4.2 is the latest version (for x64 OS) at the time of writing this guide.

    So, on this step-by-step guide, we'll be using Linux Mint 19 Mate 64-bit Edition as our host OS for uniCenta. Though you can use Ubuntu 18.04 Desktop Edition or Linux Mint Cinnamon with this procedure, since LM is based on Ubuntu.

    Please take note that in this post, when I mention UC, I mean uniCenta. And when I mention LM, I mean Linux Mint.

    Overview of the installation

    Before getting started with this guide, make sure you already have a clean and working instance of LM 19 (64-bit) or Ubuntu 18.04 64-bit Desktop Edition. As I can't post the guide for now.

    1. Setup a clean instance of LM 19 (64-bit) or Ubuntu 18.04 64-bit Desktop Edition
    2. Download the 64-bit version of Java JRE then Install
    3. Download and Install UC 4.4.2
    4. Create Launcher for UC 4.4.2 in Linux Mint 19

    Note: 4.3.2 version of uniCenta is for 32-bit/x86 OS only.

    Procedure

    I like to mention again that we'll be using Linux Mint 19 Mate 64-bit version and Unicenta 4.4.2 64-bit. So, to easily follow this guide, I highly recommend that you should use the same version and architecture. Once you learned the process, it would be easy for you to install any version you'd want. Further more, using the same setup as mine, you can just copy/paste the command or copy part of it and make necessary adjustment.

    Also take note of this , you could use it as video reference along with this guide.

    The Step-by-step Guide in Installing Unicenta 4.2.2

    Step 1: Setup a clean instance of Linuxmint 19 (64-bit) or Ubuntu 18.04 64-bit Desktop Edition.

    Install LM 19 64-bit edition with the Mate Desktop environment. This version is a better choice for low resource PC.

    Sorry, I don't have the tutorial part for this particular step.

    If you already have a working LM19, then please proceed to Step 2.

    Step 2: Download the 64-bit version of Java JRE then Install

    To download the latest Java JRE, which is compatible with the latest version of UC, head over to (https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html).

    Note: If we are using a distribution based on Ubuntu, it might already have OpenJDK Java installed, like LM 19 or Ubuntu 18.04 does. But we need "Java SE Runtime Environment 8u20x" to successfully run UC. So in this step, we need to install and configure Java JRE.

    Step 2.1: Download JavaJRE for Linux Mint 19 64-bit

    We need to download the compatible version, in our case, we need the 64-bit version for Linux with the tar.gz package. At the time of writing this guide, the latest compatible version are 8u201 and 8u202.

    With this guide, we'll be downloading the 8u201 version. The right package is jre-8u201-linux-x64.tar.gz

    Reference Image:

    Reference Photo: Java JRE Download Page

    So, now let's go to our LM 19 Mate Desktop and launch Firefox, download (https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html) and extract it. Take note, you need to tick the "Accept License Agreement" before you can download the package.

    Step 2.2: Extract JavaJRE Package

    Once downloaded, extract the jre-8u201-linux-x64.tar.gz package using LM's GUI. Browse to the file location, right-click on the file and click Extract here.

    In Linuxmint, the default download location for Firefox is in /home/your-user-name/Downloads.

    Step 2.3: Move The Package

    After extracting the package, you should have a new directory named jre1.8.0_201.

    Next, move the whole jre1.8.0_201 directory to the /opt directory. In Linux, this directory should hold all the 3rd-party apps. To do the move, we need to launch a terminal and use the command-line to move the entire folder.

    So, launch a terminal, use hot-key ctrl + alt + t, then type in:

    cd ~/Downloads

    ...to go to the download location of the Java JRE package. In case you downloaded the package to somewhere, then you have to cd to that location first.

    Next, from the Download location move the entire package to /opt directory. To do that, enter the following command and hit enter key:

    sudo mv jre1.8.0_201 /opt/.

    The JRE package should now be in /opt directory. To confirm, enter command ls -l /opt. Be sure to include the . at the end of the command.

    Sample output:

    drwxr-xr-x 6 chubbable chubbable 4096 Feb 28 04:50 jre1.8.0_201
    Step 2.4: Install The Java JRE Package

    Install the JavaJRE package for Linux Mint 19 and make it the default Java for UC. Let's set a higher priority number to make it the default. In our case we set it to 110.

    Type command and press enter key:

    sudo update-alternatives --install /usr/bin/java java /opt/jre1.8.0_201/bin/java 110

    Next, type below command and press enter key:

    sudo update-alternatives --config java

    Then select the number that corresponds to the Java JRE version we downloaded in Step 2.1. In our case, it is jre1.8.0_201/bin/java inside the /opt directory. So, choose the number that matches it. In our case, it's Selection 1.

    So, type in 1 and press the enter key.

    Sample output:

    sudo update-alternatives --config java
    There are 2 choices for the alternative java (providing /usr/bin/java).
    
      Selection    Path                                         Priority   Status
    ------------------------------------------------------------
    * 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1101      auto mode
      1            /opt/jre1.8.0_201/bin/java                    110       manual mode
      2            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1101      manual mode
    
    Press <enter> to keep the current choice, or type selection number: 1
    update-alternatives: using /opt/jre1.8.0_201/bin/java to provide /usr/bin/java (java) in manual mode
    Step 2.5: Set User Environment for Java JRE

    Set environment so Linux Mint users can use your configured Java JRE location.

    Command should be:

    sudo nano /etc/environment

    Expected screen output should be similar to the following:

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

    Now, below that line of text, insert this line (location of Java JRE directory):

    JAVA_HOME="/opt/jre1.8.0_201"

    Next, save the file (ctrl + 0) then exit the editor (ctrl + x).

    Next, while still in our terminal, type:

    source /etc/environment

    No text output will appear, but to verify, type:

    echo $JAVA_HOME

    Expected output in this case is:

    /opt/jre1.8.0_201

    If you get the output above, then you have successfully installed Java JRE for Unicenta 4.4.2.

    But, we're not ready to install uniCenta yet, we need to reboot our machine. To reboot LM from commandline, simply type: sudo reboot.

    Once rebooted, you're now ready to install uniCenta 4.4.2. The Step-by-Step Guide to do this is below.

    Step 3: Download and Install Unicenta POS 4.4.2

    Step 3.1: Downloading the Installer

    To download uniCenta 4.4.2 or any community version, go to their Sourceforge and download the package for our OS. In our case, we should download the (https://sourceforge.net/projects/unicentaopos/files/releases/linux/).

    For this guide, we need the file with the name: (https://sourceforge.net/projects/unicentaopos/files/releases/linux/unicentaopos-4.4.2-linux-x64-installer.run/download)

    Step 3.2: Run the Installer

    To run the installer, you need to have administrative privilege. In Linux, the user account you're using should have a sudo privilege. In simpler term, the user should be a member of the sudo group. If all are set, then we can now run the installer.

    We can run the installer from the commandline or using file explorer with the right-click context menu.

    From Commandline

    To run from commandline, you need to use sudo command + the path to the installer file with .run file extension. To do this, type in:

    sudo ./path/to/unicenta/installer.run

    In our case, the installer was downloaded to our Downloads directory, since it is the default Download directory for Firefox.

    Sample command:

    sudo ./home/chubbable/Downloads/unicentaopos-4.4.2-linux-x64-installer.run

    In case we save the installer somewhere, then we need to use that path with the command.

    Notice the dot (.) there before file path? You need that to run the installer.

    The command will prompt us to type our password, after hiting Enter key. Then, installation continues.

    From Right-click Context Menu

    WE can also run the installer using the file browser by right-clicking on unicentaopos-4.4.2-linux-x64-installer.run and click Run As Administrator.

    Reference Image:

    Reference Image: Run the uniCenta Installer on Linux Mint

    This step will require us to type in our password. Make sure the user account that we use during this step, should be a sudo user.

    After successful authentication, this dialogue will pop up (langguage selection):

    Reference Image:

    Reference Image: uniCenta Language Selection Dialogue

    Choose your preferred one and click OK.

    Next, select the right Java JRE. In our case, we should pick the one in /opt/jre1.8.0_201. So tick that choice, then go through the process and finish the installation. We need to accept the License Agreement, and accept the recommended uniCenta install directory for Linux - which is /opt/unicentaopos-4.4.2.


    At this point, we should have installed uniCenta successfully. We can now proceed to the next step below.

    Step 4: Create a Launcher

    To create the launcher, we simply need a new file and name it whatever we want, but should have a file extension of .desktop. We can name it like uniCenta Launcher or anything we may come up with.

    For the sake of demonstration, We'll name the launcher as uniCenta. But before we proceed, we need to take a test launch.

    Step 4.1: Test Launch

    We need to run the app using the supplied start.sh file. We can launch the app from command-line using sh command.

    So let's get started.

    Launch a terminal and go to uniCenta app directory:

    cd /opt/unicentaopos-4.4.2

    Set execute permission for all .sh file, so users can use the app from their own user account:

    sudo chmod a+x *.sh

    Launch start.sh:

    sh start.sh

    If it fails due to the following errors or similar:

    • bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or directory
    • start.sh: 28: start.sh: Syntax error: word unexpected (expecting "in")

    ...then we need to fix the problem first, using the guide below.

    If there are no errors, we can exit the app for now, then configure later. We can now proceed to the "App Launcher Creation" Step.

    Fix start.sh Syntax Error

    These are two possible errors thrown when launching the App using start.sh, it's either:

    • /bin/sh^M: bad interpreter: No such file or directory
    • Syntax error: word unexpected (expecting "in")

    We need to fix the issue first before making the app launcher. Basically, the problem with the start.sh file is due to the improper line ending format. It should have a Linux/Unix compatible line ending format, instead of Windows DOS format. .sh files are unix (linux) shell executables files, and therefore be saved with the proper format.

    That said, we can fix the issue by converting the file's line ending from Windows to Unix/Linux format.

    To do that, simply open the file using the built-in text editor in LM 19 called Xed, then save it without modifying anything. When saving, use Save As menu, then choose Unix/Linux format for the Line Ending.

    Command to type in our Terminal:

    sudo xed /opt/unicentaopos-4.4.2/start.sh

    Of course, we need to use the right file path if we installed uniCenta in a directory different from what is recommended in this tutorial.

    Reference Image:

    Reference Image: Fixing the uniCenta SH Error
    Step 4.2: Create a Launcher for Unicenta 4.4.2 in Linux Mint 19

    After a successful test launch, we can now proceed to next step.

    To create a launcher for uniCenta 4.4.2 in Linux Mint 19, we need to launch a Terminal and type in:

    nano ~/Desktop/uniCenta.desktop

    Then copy the following block of text and paste it inside the window. To paste, ctrl + shift + v. Then save the file, ctrl + o and hit enter key.

    #!/usr/bin/env xdg-open
    
    Version=1.0
    Type=Application
    Terminal=false
    Name=uniCenta
    Comment=Launch Unicenta
    Exec=/opt/unicentaopos-4.4.2/start.sh
    Icon=/opt/unicentaopos-4.4.2/unicentaopos.ico

    We should now have a neat looking shortcut icon on our desktop.

    Reference Image:

    Reference Image: uniCenta Desktop Launcher

    Now, double-click to launch it! If you're greeted with a message mentioning about Untrusted application launcher, dont fret. We can safely ignore it and simply click on Mark as trusted. The next screen we'll see is the Database manager message, saying "unable to connect to the database". This is normal since it's the first time to launch the app. So what you should do is to click on OK, and proceed to configure the app.

    Reference Image:

    Reference Image: Untrusted Application Warning

    And there you have it, uniCenta has been launched!

    Now, make the necessary configurations like; database, company name, skin, logo and etc.

    How To Configure Unicenta 4.4.2 oPOS with MySQL Database Server

    In this section of the guide, we need to install mysql-server via the commandline. With version 4.4.2, Apache Derby Embedded Database is no longer shipped with uniCenta, and only MySQL database should be used.

    MySQL Installation

    To install MySQL for uniCenta, launch a terminal (ctrl + alt + t) and type the following command:

    sudo apt update; sudo apt install -y mysql-server

    That command should install the latest version of MySQL Server for LM 19 or Ubuntu 18.04 Desktop edition. Version 5.7 is the latest version at the time of writing.

    Note: You can install the Database on the same machine with UC. Plus, you can use the database for other UC machines in your local network.

    MySQL Basic Configuration & Database Setup

    So once installed, we need to add a database for UC along with database user and password.

    Let's launch terminal if you haven't already, and type in the following command:

    sudo mysql

    That will log us in to mysql commandline prompt (mysql>):

    Next, we'll create the database for UC:

    create database unicentaopos;

    Create database user and grant privilege to the unicentaopos database:

    grant all on unicentaopos.* to 'unicentaopos'@'localhost' identified by 'Password';

    Let's break the command down and further explain it:

    • grant all on unicentaopos.* - This is the database we created
    • 'unicentaopos'@'localhost' - We are granting unicentaopos (which is the database username) database privileges.
    • identified by 'Password' - We are setting Password as the database user's password. We can change this to something more secure.

    So what did we set using the command above:

    • Database Name - unicentaopos
    • Database User Name - unicentaopos
    • Database User Pass - Password
    uniCenta Database Setup

    Next, we launch uniCenta and go to: System > Configuration > Database Setup

    You should see similar page like this one:

    Reference Image: MySQL Database Setup on uniCenta 4.x.x

    Then we supply the database details:

    • Driver Library: /opt/unicentaopos-4.4.2/./mysql-connector-java-5.1.39.jar

    • Database: MySQL

    • Driver Class: com.mysql.jdbc.Driver

    • DB 1 Name: Main DB

    • DB 1 URL: jdbc:mysql://localhost:3306/unicentaopos?zeroDateTimeBehavior=convertToNull

    • User: unicentaopos

    • Password: Password

    Now, let's test the connection and when successful, Click Save button and you should see a confirmation message. Click OK and then exit.

    Reference Image:

    Reference Image: Configuration Saved Successfully - Pop -up Dialogue

    uniCenta 4.x.x Errors You Might Encounter

    Reference Image: Warning Dialogue Creation Script Did Not Run Successfully

    Creation Script Did Not Run Successfully

    I ran through this error during uniCenta's first launch. See reference image below.

    If this issue is not fixed, you will go through an error when configuring employee's shifts and breaks settings. So what you should do is to run a couple of mysql commands.

    The below procedure fixed the issue for me.

    Note: I installed uniCenta from scratch, then went through this procedure before finally launching UC for the first time.

    The Fix

    The solution is to edit SQL mode and disable NO_ZERO_IN_DATE,NO_ZERO_DATE.

    1. On your Linux Mint or Ubuntu machine, login as root to MySQL.

      sudo mysql
    2. Then run the following commands successively. You may copy each command and paste it into your mysql command prompt:

      First Command:

      set sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

      Second Command:

      set global sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

    The Wrap Up

    You should now have a working instance of uniCenta 4.4.2 on Linux Mint 19. In case things didn't go well, feel free to comment below and I will help you with any installation related issues. Take note, that you can also use this guide with Ubuntu 18.04 Desktop instead of LM.

    So I think that's pretty much it for this guide. In case you ran through issues, feel free to comment below.

    If this guide did worked for you, you can thank me by:

    • Leaving your comment below
    • Sharing This Post With Your Friends
  • Hello world!

    Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

    Sample Code

    <virtualhost *:80>
    ServerName cloud.loc
    ServerAdmin [email protected]
    DocumentRoot /var/www/cloud.loc/owncloud
    ErrorLog /var/www/cloud.loc/logs/error.log
    CustomLog /var/www/cloud.loc/logs/access.log combined
    <directory /var/www/cloud.loc/owncloud>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
    </directory>
    </virtualhost>
    

    Sample Code 2

    <virtualhost *:80>
    ServerName cloud.loc
    ServerAdmin [email protected]
    DocumentRoot /var/www/cloud.loc/owncloud
    ErrorLog /var/www/cloud.loc/logs/error.log
    CustomLog /var/www/cloud.loc/logs/access.log combined
    <directory /var/www/cloud.loc/owncloud>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
    </directory>
    </virtualhost>

    What is Lorem Ipsum?

    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

    What is Lorem Ipsum?

    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

    What is Lorem Ipsum?

    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

    What is Lorem Ipsum?

    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

    What is Lorem Ipsum?

    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.