DIY Wordpress in DigitalOcean

Once upon a time, you need to do your wordpress installation with a dirty hands.

SSHing to the VPS and install everything.

Nowadays, we've got One-Click-Install equivalent in Digital Ocean.

But i never find the install is satisfactory to the way that i use wordpress.

For a dev who hates to manage wordpress, somehow someway it will come back and bite you.

So this is my checklist after successfully installed Wordpress to my liking in a new instance of DigitalOcean.

The Checklist:

  • Buy the domain name. I've used namecheap for so long, it was not checap anymore.
  • Initiate DO with Ubuntu 18.04 LTS. Why not 19.04? well, no specific reasons. Please try and let me know.
  • Make sure to include your public ssh key in the initiation.
  • SSH as root into Ubuntu. Password should be emailed to the current DO user account.
  • create new sudo user for next operation. Never lose the password! This user will also be the FTP user account
  • Install apache2 from apt-get if necessary
  • Check the apache installation. Go to the ubuntu ip over the net. Should see Apache default page. Ip was shown in DO Instance list, or you can just ifconfig in the terminal.
  • Go to DNS (mine was namecheap) and add the ip address to your domain of choice. In 1-24 hour, the domain name will resolved to ip address and you should see the apache default page too if the wordpress installation was not done yet.
  • Install PHP from apt-get
  • Install MySQL from apt-get
  • Run MySQL secure install. Remove all test data and change root password
  • Enter MySQL, create table for wordpress and its corresponding user-password. Don't forget to FLUSH PRIVILEGES
  • Go to sudo user home (~), mkdir html and cd into it
  • Now inside /html wget latest wordpress installer from
  • Unzip the installer, you will have /home/sudouser/html/wordpress now.
  • Copy /etc/apache2/sites-available/000-default.conf to /etc/apache2/sites-avalable/ with your domain accordingly
  • Nano /etc/apache2/sites-avalable/
  • Change the root directory to /var/www/html/wordpress and put your domain name as ServerName
  • Save and exit Nano. a2ensite the vhost config to enable it. Reload apache to make it in effect
  • soft link (ln -s) the /home/sudouser/html/wordpress to /var/www/html
  • Open the domain in browser and wordpress installation will start. Change username admin to something else.
  • Proceed with wp-config. Use MySQL db user details. Please change wp prefix to something else
  • Change file permissions accordingly (644-600-755). Wp-contents to 775
  • Change file ownership accordingly (www-data!)
  • Add .htaccess file to allow beautiful permalinks to take effect
  • Install vsftpd
  • Test login FTP
  • Test wordpress install plugin with FTP login. Debug accordingly (cannot create dir => dir permission)
  • Try Install security plugins (Sucuri)
  • Try install themes
  • Try upload file in wordpress media
  • Make sure all wordpress upload and install is good to go
  • Install SSL with letsencrypt/certbot. Make sure it crons renew every week
  • Done!

Bonus: there is always a need to have an email account behind the domain to make it more legit.

NEVER EVER install mailbox in the web server.

The best is use a paid email services such as Gmail or Zoho mail.

But as i am that cheap, i use free alternative to them. We got Yandex and Migudo. Both are straight forward to use.

One glitch with Yandex: the verification need to be done BEFORE doing https, as it defaulted to look for http only.

With migudo, it is rather straight forward affair. Done setting up in 15 minutes and waiting for about 3 hour before the MX record was recognized and fully functioned.

Migudo guides is simple and clear enough to follow effectively.

Migudo also provide IMAP and SMTP configuration to be used accordingly. How nice!

And after all that, the domain is now ready to roll for the next phase: Design and UI/UX

Maybe another checklist for UI/UX for the next time.


published at 23/07/2019 by Izwan Robotys

List of Viable Alternatives to CPanel

Recently got an interesting problem to look for by a friend: as a non-linux user, what is a viable alternatives to CPanel as GUI based server management system?

Surprisingly it can not be answer shotly and sweetly. It seems so convoluted and complex.

This write up are my raw thought process on the topic.

Firstly, we need to have a checklist of what we want to do in the server.

And best we have and ideal workflow on how to achieve it.

As an overview, we need to be able to:

  1. Account management to create user and its corresponding access
  2. Manage domain with its corresponding root directory
  3. Run a PHP script, latest version is the best with standard basic module enabled
  4. Run Wordpress, Codeigniter and Laravel as prerequisite
  5. Have a MySQL database in stock configuration with basic security
  6. MySQL editor to manage data in the database
  7. FTP to manage files upload and etc.
  8. Email account that tied to the domain
  9. Email interface with basic email management features
  10. SMTP to allow system to send email out
  11. SSH keys management so root user can access the bare metal
  12. Git and Composer installed to enable continuous integration
  13. Update and upgrade OS patch, PHP patch, MySQL and Web server of choice

Well, thats a handfull.

Now, lets get a list of all available CPanel alternatives:

  • Webmin
  • Virtualmin
  • ISPconfig
  • Directadmin
  • Plesk
  • CentOS Web Panel
  • VestaCP

Aaaaannnd after found VestaCP in the list, i think i gonna start trying it.

Reason: nice UI and seems like ticking all the 12 checklist above.

Lets go VestaCP!

UPDATE (2019-07-23)

Not using VestaCP anymore due to Need to purchase premium plugin for File Manager and FTP.

So, right now back to rambo mode: SSH into ubuntu and install and config whatever i want.

Stay tuned for checklist and pointers on that.

published at 18/07/2019 by Izwan Robotys

The Cheapest Website Package

Robotys Cheap Website Sources

... that i can offer to my clients is this: RM 870.

Yep. Only RM 870.

With 8 years of experience in web development, handling various kind of project big and micro-small, as a various position (web design, backend, database, digital marketing, scale engineer, sys admin, mobile ui, you name it!), with budget ranging from millions to none (NGO client), that is basicly the cheapest you can get.

And it is not lack of punch too!

Lets see what you will get for that price:

  1. Nice looking design in whatever kind of design the client want.
  2. Properly internally linked web structure to promote SEO and ease of use
  3. Search function to make it easy for visitor to look for information
  4. 1 year small web server capable of handling small-to-medium traffic (up to million visitor a month).
  5. 1 year domain name, if necessary.

How in this world can the price be so low? Well, this are the catches:

  1. No content and copywriting provided. Do it yourself or hire proper copywriter
  2. No photo session or photo editing also graphic design. Hire proper designer for that. Or just D.I.Y. according to standard web design specs. I'll give it to you
  3. Utilizing Web Design templates that can be bought cheaply and easily nowadays. I like themeforest! Ehem: client buy it, not me.
  4. Plain html website OR --->
  5. Wordpress based 'blog/portfolio/catalog' kind of website. No fancy plugins and functionality.
  7. Limited pages, up to 5 'pages'. No worry, that is more than enough actually.

And now we can see why.

This package in a nutshell working on one simple principle:

Only Pay Me To Do Codes

Not to tinker with design.

Not to think the best graphics for the content write 3000 words for the content.

Not to handle photo session and post production for the content (again).

Not to give my codes to third grade system admin that will break the codes (and they blame my codes, not their incompetence).

It seems that there are so many limitation on what this package can do. But wait.

Lets look what is it good for --->

Essentially, this kind of package is perfect for three type of website:

  1. For Online Presence (Company & individual). The first thing people do to verify you nowadays is by looking for you online. Take control of your online presence. Have a representative website.

  2. For Sales Catalog. If you are selling something, might as well have it listed on your own branded website. It will increase your credibility and easier to close a sales. If you are selling service, this can easily modified to be Work Portfolio. It helps prospects decide are your kind of work really suites their needs.

  3. And lastly: For Validation Purposes. The best way to gauge if you can sell something or not is by having an online page for the stuff and drive traffic to it. If people try to order rabidly, then that product/service is a winner! No need to buy stocks or have a shop to validate something.

That is the power of simple & cheap website!

ps: Email me ( if you like to discuss further.

published at 30/11/2017 by Izwan Robotys

Can You Do That?

Cute Girl Asking You To Do Things

Just small tips: if client ask you (the programmer, or project manager) this seemingly harmless question of "Can you do that?", you are basically one step away from deadly trap of workload explosion.


Because that question is the pinnacle of miss-communication in any website development projects.

The client is NOT asking if you can code the solution. He is not questioning your ability and skill to develop said features.

The question asked is not completed. The complete phrase is:

Can you deliver this within the same deadline perfectly as i imagine?

Yep, that is the real question that they ask you.

Thus, DO NOT simply reply to the asked question, but rather reply to the complete phrase above.

This make you realize that most of what they asked CAN NOT be done. Not only because that additional features is out of the budget, but also new task will need additional time.

New features = new deadline.

That is inevitable.

You the programmer will not feel bad to say no, as your ego will not be injured because the reason you say no was not your inability to solve said bugs or to develop said features, but the deadline to do so is unreasonable.

Client always have lack of understanding on how many time it needed to really deliver what they imagine.

That, plus their lack of effort in communicating what they imagine in the first place.

How many of us has heard the satanic phrase of "I'll know what i want when i see it."

That is the screaming red flag that the client is worth to do everything you can to move away from them.

May peace be with you.

published at 12/10/2017 by Izwan Robotys

About Robotys

Just some small details about me to warm things up.

Call me Robotys, as thats my nick name from primary school. Long story with multiple version of it. I'll tell you when we meet.

Programmer officially since 2008 specifically in web application. Developing web sites of all sorts. Consider myself as fullstack developer. Can do pretty abstract stuff like Web Design and Multimedia all the way down to coding front-end (HTML5/CSS3/JS) and back-end (PHP7) with or without framework (Jquery/CodeIgniter/Laravel).

Currently employed as Senior IT Developer (Web App) at Xentral Methods Sdn Bhd. Managing web assets in form of digital book ecosystem for Malaysia and SEA region. Since 2013, which make it already 4 years!

Career Update (2020-02-08): Still Sr IT Developer but now at MyParcel Asia Sdn Bhd. We are aggregator for local courier provider parcel shipment services within Malaysia and also international. Right now main jobscope encompassing product management, web development, and lead tech for special project with national courier. Start from April 2018 until now.

With that many years under my belt and various scale of project, I also take outside job mainly on consultation and also hands on for selected projects. Usually to help friends and friends of friends on their website needs.

If you like to have a coffee with me on the topics, just PM my facebook. We can arrange a meeting if necessary.

Other than that, i enjoy good books mainly around business topics. Second to that is i like to do marketing experiments and share about it at my personal facebook profile. Its written in Bahasa Melayu mind you. If you like to read about technical and strategic business stuff IN BAHASA MELAYU, then you may enjoy my writing there.

Loosely based in Kuala Lumpur Malaysia. 'Loosely' because i move around 'Greater KL' such as Klang and Seremban and i move alot. Just can't keep my footing down for a long period of time.

This blog is my effort to get back writing in english as i can sense it is withering and getting rusty. So, do advice and help me on it.

Oh, don't let me start on 'speaking' in english. Need so much work there!

Thank you!

published at 29/09/2017 by Izwan Robotys