One place for hosting & domains


      The 8 Best Web Management Tools for Small Businesses in 2019

      From site design to social media and everything in between, managing your web presence is integral in today’s market. There are several reasons why you need a strong online presence: it reinforces your brand, boosts your marketing efforts, and most importantly, helps you connect with your customers.

      But what if you’ve got a local clientele or are a brick-and-mortar operation that’s not really interested in doing the whole e-commerce thing? Do you really need a small-business website?

      The answer is an internet-troll-style, all-caps, gigantic YES: 97 percent of consumers use the web to search for local businesses. If you want your small business to reach its full potential, you need to have an online presence.

      But where do you start? After all, there are thousands of tools out there that claim they help with web management. So we’ve put our fingers on the keyboard and nose to the grindstone — gross, right? — to research the best web management tools for your small business. Here’s what we found.

      Web Design

      When it comes to web design you’ve got several options. Of course, you can always hire a professional team from a trusted firm to tackle your web design, but experts don’t come cheap. If you’re looking for a more cost-effective method, you’ll be pleased to learn that there are several programs that are easy to navigate, have beautiful templates, and provide easy click-to-edit functionality to make creating a beautiful website easy — even if you don’t know how to code or aren’t a professional designer. Here are some of the best.

      1. WordPress

      If you’re at all web savvy, WordPress is an excellent choice. WordPress is a content management system (CMS) that makes it easy to regularly update your website with fresh blog posts, news stories, and more. WordPress does have a slight learning curve, but it’s relatively easy to tackle and you’ll be pleased with the number of features.

      • Flexibility — WordPress is extremely versatile. You can create a blog, a portfolio, a business website, an online community, an online store, and basically anything else you can think of.
      • Simplicity — Not only is WordPress flexible, but it’s also simple to use. With WordPress, you don’t have to know how to code to get a responsive website up in minutes. Plus, tools like DreamPress are specifically built to make maintaining your site and keeping it secure really easy.
      • Popular — WordPress is one of the most popular web design tools on the market. That means there are thousands of pre-designed themes, useful plugins, and resources to help you build, modify, and update your site with ease.
      • Cost — Since software is free, it’s a budget-friendly option that can scale with your business as you grow and need more features.

      Get More with DreamPress

      DreamPress Plus and Pro users get access to Jetpack Professional (and 200+ premium themes) at no added cost!

      2. Remixer

      Remixer is another top-of-the-line website building tool that was whipped up fresh in DreamHost’s developer kitchen. Here’s why it’s great: if you need a DIY website that doesn’t look homemade, Remixer is a click-to-edit solution. So what else does Remixer have going for it? Glad you asked.

      • Responsive — With Remixer, you can rest assured that your website is 100 percent responsive. This means no matter what device your visitors are using to find your site, they’ll have a great experience. In 2018, a mobile-optimized website is a must for small-biz owners.
      • Easy — Remixer is designed with ease in mind. That’s why the click-to-edit interface makes it easy to import your own images. If you don’t have your own art, the royalty-free image library takes care of that too.
      • Quick — Just a few clicks on Remixer and you can get a website up and running in 10 minutes. Yeah, we timed it.
      • Easy to Export  You can start your site in Remixer and then easily export it to WordPress when you’re ready to add e-commerce or blogging functionality.

      Need a Beautiful Website?

      Design it yourself with Remixer, our easy-to-use website builder. No coding required.

      E-Commerce Software

      If you want e-commerce capabilities, we’d recommend building your website with WordPress — the flexibility and scalability are ideal for online stores. But remember: WordPress doesn’t come with an e-commerce solution out of the box. You’ll have to add that functionality, either via a plugin or an additional platform, to create a digital shopping cart.

      3. WooCommerce

      WooCommerce is a popular WordPress plugin and one of the best e-commerce solutions on the market. And it’s easy to get started! Basic features to help you manage payment, shipping, and other common tasks come baked in. If you need additional options, however, it’s easy to find extensions to add functionality.

      • Budget-Friendly — Both software and WooCommerce are completely free, as are some of the extensions (most of the others range from around $50 to $100). Getting your online store up and running doesn’t have to burn a hole in your pocket.
      • Scalable — WooCommerce makes scaling from small business to larger venture easy. For example, if you need more payment gateways, simply download and install a relevant extension or plugin.
      • Secure — Security is vital for every website but especially if you’re managing transactions. WordPress’ dedication to security and frequent updates will help protect your site. Additionally, customers using DreamHost’s managed WordPress options are protected by a built-in firewall that eliminates the need for additional security plugins.
      • Search Engine Optimized — WooCommerce itself is light on SEO-related features. It’s built using code optimized for SEO, and there are a few relevant extensions you can add, such as SEO Friendly Images. However, if you really want to improve your store’s chances of getting to the first page of Google, you can download a WordPress SEO plugin.

      Your Store Deserves WooCommerce Hosting

      Sell anything, anywhere, anytime on the world’s biggest eCommerce platform.

      4. Shopify

      Shopify is a subscription-based, e-commerce platform that makes it easy for beginners to build and customize an online store in very little time. It also provides a “guru” service to guide you through the creation and management of your e-commerce site.

      • Reliable — Shopify is one of the largest e-commerce solutions on the market. Because it requires a monthly subscription — plans currently start at $29 per month — you can count on Shopify’s rock-solid performance.
      • Integratable — It’s easy for DreamHost customers to integrate a Shopify store with your site. There’s also an app store where you can download add-ons that provide functionality such as social media, shipping, and accounting.
        Support — Shopify provides support through its comprehensive help center, where you can find everything from tutorials to troubleshooting guides. You also get access to 24/7 support via chat, email, or phone.

      Still wondering whether you should opt for WooCommerce or Shopify when building your e-commerce site? Wonder no more. We’ve put together a comprehensive guide to help you parse out which platform might be more suitable for your website.

      Social Media

      Even a small business can have a large social media presence. The social tools below will allow you to expand your web presence all in one integrated interface. Be in several places at once? It’s every small business owner’s dream!

      5. HootSuite

      HootSuite integrates with Facebook, Facebook Pages, Twitter, Instagram, Google+, Google+ Pages, LinkedIn, FourSquare, MySpace, YouTube, and WordPress. It allows you to schedule posts ahead of time, focusing on peak performance times for each platform.

      • Convenience — If you’re sick of switching between your social media profiles just to push out daily updates, then you’re going to love HootSuite. With HootSuite, you can manage all your social platforms from one location.
      • Collaboration — Many small businesses have several people creating content and posting across channels. If you don’t have a cohesive system, you’re setting yourself up for a social snafu. HootSuite gets everyone on the same page.
      • Reputation Management — HootSuite makes it possible to never miss a mention or complaint that your team needs to address.

      6. Buffer

      Buffer supports up to 25 social accounts, allowing you to post across all your platforms from one interface. Here are some of Buffer’s other top features.

      • Trends — Buffer has integrated analytics and insights, making it easier to tweak your social strategy based on data.
      • Scheduling — Buffer allows you to create a custom schedule for each day. You can do it daily, monthly, or annually — basically whenever it’s convenient.
      • Insights — You’ll never have to wonder when you should share your next Instagram pic or Facebook missive. Buffer keeps track of your followers so you know when it’s the optimal time to post.

      7. Everypost

      Everypost makes it easy to curate content from across the web, schedule your posts, and integrates with Facebook, Twitter, Google+, Linkedin, Pinterest, and tumblr.

      • Analytics — You can social smarter with the analytics provided by Everypost. The dashboard is sleek and easy to use.
      • Curation — Everypost helps you curate content directly within the app — no switching around to find shareable content, design content, and post content.
      • Customization — You can maximize the potential of each post you create. This helps you reach all of your audience members, no matter what platform they are on.


      It’s not enough to build your website and forget it; you’ve got to be strategic about getting your brand out into the world — and in front of the eyes of your potential customers — as much as possible. Even if your business is a brick-and-mortar deal, promoting your website and digital offerings will usher local Googlers into your doors.

      8. HubSpot

      HubSpot offers a free marketing tool and WordPress plugin to help keep track of potential customers and assist you with lead conversion — that is, converting a casual browser into a committed buyer.

      • Capture — HubSpot makes it easy to grab website visitors’ email addresses by helping you create a pop-up invitation or another module. It can even pull and track information from any form submission on your website — no matter what tool or plugin.
      • Track — Along with keeping track of visitors’ email addresses and activity on your website (purchases, time spent on page, etc.), you’ll know which other websites your potential customers have visited.  
      • Convert — Analytics displayed on a simple dashboard will help you know what’s working for your site (and what isn’t) and how to target marketing emails to bring your customers back.
      • Simple — The HubSpot WordPress plugin is simple to use, even for the non-techie, and it plays nicely with other tools such as Shopify.

      Want to Keep It Simple?

      Obviously, there are several tools out there to help you effectively manage your online presence. But you don’t have to overwhelm yourself by investing in every option on the market! If you’re brand new to the web, use Remixer to get your website up quickly. Then you can add some of the other options on this list to build your brand online.

      Source link

      Secrets Management with Terraform

      Updated by Linode Contributed by Linode

      Terraform is an Infrastructure as Code (IaC) tool that allows you to write declarative code to manage your infrastructure. In order to implement IaC with Terraform it is necessary to supply secrets, such as server passwords and API tokens, within your code. This guide will discuss methods for securing those secrets within Terraform.

      Keeping Secrets Out of .tf Files

      In Terraform, .tf files contain the declarative code used to create, manage, and destroy infrastructure. This code is often committed to a version control system like Git, using a platform like GitHub, and shared within a team. Because it is easy for this information to become public-facing, it is important that you make sure your committed code is free of secrets.

      Input Variables

      Terraform configurations in .tf files can accept values from input variables. These variables are included in your configuration using Terraform’s interpolation syntax.

      For example, you might have a file with a provider block that requires an API access token. The token variable definition is declared inside your .tf file and is then interpolated inside the provider declaration with the "${var.token}" syntax:
      variable "token" {
        description = "Your API access token"
      provider "linode" {
          token = "${var.token}"

      Variable definitions are written in .tf files. In this example, it’s the same file as your provider configuration, but the definition could have been in a separate .tf file too.


      Your variable definitions can have default values assigned to them. Here’s an example that encodes Linode’s Newark data center as the default value for a region variable:
      variable "region" {
        description = "The region to deploy Linode instances in"
        default = "us-east"

      You could later use this variable when declaring your Linode instances.

      Assigning Variable Values in a File

      The values assigned to your variables (aside from default values) are not included in the variable definitions in your .tf files. Instead, the values are stored in separate files with the .tfvars extension. When Terraform runs a command like plan or apply, it automatically looks through the working directory for a file named terraform.tfvars, or for files with the .auto.tfvars extension.

      Here’s an example terraform.tfvars which supplies a value for the token variable from the previous example:

      token = 'your-token-value'

      You would then add the terraform.tfvars file to your .gitignore file and keep it out of version control. This strategy allows you to safely commit the file.

      For ease of use with large terraform.tfvars files, it might be beneficial to include an example terraform.tfvars.example in your Git repository with all of the variable names recorded (but none of the values entered). Team members could then copy this example into their local repository’s terraform.tfvars and enter the appropriate values.


      Variable value files with names that don’t match terraform.tfvars or *.auto.tfvars can be specified with the -var-file option:

      terraform apply -var-file=myvars.tfvars

      Supplying multiple .tfvars files is another way to further separate secret variables and non-secret variables; e.g.:

      terraform apply 

      Assigning Values in Environment Variables

      Terraform allows you to keep input variable values in environment variables. These variables have the prefix TF_VAR_ and are supplied at the command line. Using the above example of an API access token, you could export the variable and use it like so:

      export TF_VAR_token=your-token-value
      terraform apply

      You could also include the variable on the same line when running terraform plan or terraform apply:

      TF_VAR_token=your-token-value terraform apply


      This method commits the environment variable to your shell’s history, so take care when using this method.

      Assigning Values in Command-Line Flags

      Variable values can be set with the -var option:

      terraform apply -var 'token=your-token-value'


      This method commits the command-line variable to your shell’s history, so take care when using this method.

      Supply Variables at Prompt

      If Terraform does not find a default value for a defined variable; or a value from a .tfvars file, environment variable, or CLI flag; it will prompt you for a value before running an action:

      $ terraform plan
        Your API access token
        Enter a value:

      This method is a bit easier to use than supplying environment variables, and has the added benefit of displaying the description you set up when defining your variable.

      How to Manage Your State File

      While it is relatively easy to keep secrets out of .tf files using any of the above methods, there is another file you need to be aware of when managing secrets, and that is the terraform.tfstate file.

      This state file contains a JSON object that holds your managed infrastructure’s current state. This state is a snapshot of the various attributes of your infrastructure at the time it was last modified. It is generated on terraform apply and is a necessary part of the Terraform process, as it maps the declarative code of your .tf files to your real world infrastructure.

      As of the writing of this guide, sensitive information used to generate your Terraform state can be stored as plain text in the terraform.tfstate file. For example, if you are working with the Linode provider and have supplied a root password for your Linode instance, that root password will be stored as plain text in the state file. Avoid checking your terraform.tfstate file into your version control repository. Instead, the following are some strategies for storing and sharing your state files.

      Remote Backends

      Terraform backends allow the user to securely store their state in a remote location, such as a key/value store like Consul, or an S3 compatible bucket storage like Minio. This allows the Terraform state to be read from the remote store, and because the state only ever exists locally in memory, there is no worry about storing secrets in plain text.

      Some backends, like Consul, also allow for state locking. If one user is applying a state, another user will be unable to make any changes.

      Using a Terraform backend is the preferred way to share a Terraform state file.

      Encrypting Secrets

      Third-party tools exist that allow you to encrypt your secrets. If you encrypt the secrets in your terraform.tfstate (or your .tfvars files), you can check them into version control securely:

      • git-crypt allows you to encrypt files when they are committed to a Git repository. git-crypt also decrypts files when they are checked out.


        You must initialize git-crypt in a repository before committing your state file or variable value files, or they will not be eligible for encryption.

      • Terrahelp allows you to encrypt and decrypt a whole state file, or just the variables you have include in your terraform.tfvars file.

      Use a Dummy Password

      It is possible to supply a dummy password to Terraform and later change that password manually to a more secure one. For instance, if you were to create a Linode instance with a dummy root password, you could later change that password from the command line or in the Linode Manager.


      Any attempt to change the password in a .tf file will result in the creation of new resources on terraform apply.

      Privatize Version Control

      If you are unwilling or unable to use the above options to help manage your state file, and if you are using a platform like GitHub or GitLab to share your state files, then at minimum the repository should be private.

      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      Find answers, ask questions, and help others.

      This guide is published under a CC BY-ND 4.0 license.

      Source link

      Secrets Management with Salt

      Updated by Linode Contributed by Linode

      Salt is a powerful configuration management tool which helps you manage your server deployments with configuration state files. These files are easily shared with others on your team and can be checked in to version control systems like Git.

      A common problem when working with Salt’s state files is the need access to sensitive data, like API keys and database passwords, within those files. Directly embedding that information as plain-text inside your state files can represent a security vulnerability, especially if you were to check those files into version control. This guide will explore some common methods for securing your secrets within Salt.

      Salt Pillar

      A primary method for storing secrets in Salt is to keep them in Salt’s Pillar feature. Salt Pillar is designed to maintain secrets and other variable information in a single location (generally, on the Salt master) and then deliver that information to specific minions. If you separate your secrets out from your states and into pillar files, you can ignore those files in your version control system.


      In addition to storing secrets, Salt Pillar can also maintain non-sensitive data; for example, the versions of the packages you want to install on your minions. So, you may still want to track some pillar files in version control.

      To handle this distinction, you could create a special directory at /srv/pillar/secrets and add set your version control system to ignore that directory (when using Git, list this directory in your .gitignore file). Keep all sensitive data inside pillar files within this directory, and maintain non-sensitive data in pillar files in /srv/pillar or another subfolder.

      Anatomy of Pillar Data Files

      Pillar data is kept in .sls files which are written in the same YAML syntax as states. These are generally stored within /srv/pillar on the Salt master, but this location can be configured via the pillar_roots option in your master’s configuration.

      For example, let’s say your minion runs an application which accesses the Linode API. This example pillar file records your API token in a variable called linode_api_token:

      linode_api_token: YOUR_API_TOKEN

      As with state files, a top file (separate from your states’ top file) maps pillar data to minions. This example top file maps your app_secrets pillar data to your app server:

          - app_secrets


      You may want to create a pillar.example file (like those provided by Salt formulas) that lists all the known variable keys for your pillar but does not contain the actual secrets. If you check this file into your version control, other users that clone your states’ repository can duplicate this example pillar file and more quickly set up their own deployments.

      Accessing Pillar Data inside Salt States

      To inject pillar data into your states, use Salt’s Jinja template syntax. While Salt uses the YAML syntax for state and pillar files, the files are first interpreted as Jinja templates (by default).

      This example state embeds the API token in a file on your Linode; the data is accessed through the pillar dictionary:

          - name: /var/your_app/api_token
          - contents: {{ pillar['linode_api_token'] }}


      There are times when pillar data could show up in the output that Salt generates, like when file.managed displays diffs of a modified file. To avoid displaying these diffs, you can set file.managed’s show_diff flag to false.

      Passing Pillar Data at the Command Line

      You can also supply pillar values as a dictionary through the command line, and those values will override any values set in your pillar files. This example command would apply the A_DIFFERENT_API_TOKEN value instead of the original YOUR_API_TOKEN from the previous example:

      salt '*' state.apply pillar='{"linode_api_token": "A_DIFFERENT_API_TOKEN"}'

      Environment Variables

      Another way to keep sensitive values out of version control is to use environment variables. The method for passing environment variables to your states is similar to how pillar data can be passed via the command line. The environment variable prefixes your salt command, as in this example:

      LINODE_API_TOKEN="YOUR_API_TOKEN" salt 'appserver' state.apply setup_app

      The environment variable is referenced by a Salt state file through the salt['environ.get']('ENVIRONMENT_VARIABLE_NAME') syntax. The previous setup_app example state can be adapted to use an environment variable as follows:

          - name: /var/your_app/api_token
          - contents: {{ salt['environ.get']('LINODE_API_TOKEN') }}

      As with the previous pillar example, you’ll want to keep file.managed’s diffs from appearing on screen when dealing with sensitive information by setting show_diff: false. For more information, see Using Environment Variables in SLS Modules.

      GPG Encryption

      You can use Salt’s GPG renderer to decrypt GPG ciphers that are located in your pillar files. This decryption step happens before your pillar data is passed to your minions. As a result, any value in a pillar file can be encrypted. Because the values are encrypted, you can store your pillar files in version control securely.

      This approach requires that the GPG secret key is stored on your Salt master. It also makes sense to include the public key in version control so that your team members can use it to encrypt new data for your pillar files.


      Salt comes with a database interface called SDB that was initially created to store non-minion-specific data, such as passwords. It was designed to connect to a package like Salt’s keyring module, but other options are available, such as Consul and Vault.

      These databases are set up using a configuration profile in /srv/salt/master.d. To access data, you supply an sdb:// url, such as password: sdb://mysecrets/mypassword. For more information on SDB, reference the Salt SDB documentation.


      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      Find answers, ask questions, and help others.

      This guide is published under a CC BY-ND 4.0 license.

      Source link