One place for hosting & domains

      Publish

      36 Brilliant Blogging Tools to Help You Write Better, Publish More, and Increase Traffic


      Affiliate Disclosure: DreamHost maintains relationships with some of our recommended partners, so if you click through a link and purchase, we may receive a commission. We only recommend solutions we believe in.

      Running a blog can be tough. There are times when it can feel like having multiple jobs. Not only do you need to create fresh, high-quality content, but you’ll also have a website to manage, social media posts to schedule, and data to analyze.

      Having a versatile bag of tools at your disposal can keep your blogging gig from becoming overwhelming. There are solutions for most of your day-to-day tasks, from design to Search Engine Optimization (SEO) and everything in between.

      With all the possibilities to choose from, you could spend weeks just combing through your options. So we’ve done the hard work for you. In this article, we’ll cover why you need the right tools. Then we’ll detail 36 brilliant blogging solutions worth checking out. Let’s get started!

      Why You Need the Right Blogging Tools

      As a blogger, you’ll want to find tools that help you become more productive and successful. For example, discovering topics to blog about that your audience will love can be tricky. The right solution can help you brainstorm ideas and explore new niches you weren’t previously aware of, saving you a lot of time in the process.

      What’s more, there’s more to blogging than just writing. You need to be sure people can discover and share your website. Therefore, to maximize your reach, you’ll want to look into blogging tools that give your SEO and social media a boost. This can make up for any lack of knowledge or experience on your end, and free up your attention for your actual content.

      36 Brilliant Blogging Tools to Help You Write Better, Publish More, and Increase Traffic

      We’ve argued the case for having the right blogging tools at the ready. Now let’s explore 36 of the top options and see what they can do.

      Research

      Content creation requires lots of research. You need to be sure people are searching for what you’re going to be writing about. You’ll also need someplace to keep ideas and notes.

      1. Google Keyword Planner

      The Google Keyword Planner home page.

      Before you start writing a new blog post, you might want to make sure you’re using words that people are searching for. Google Keyword Planner can provide you with feedback on your potential keywords.

      This great tool will help you by showing you how popular each chosen keyword is through search volume metrics. You’ll also get some suggestions for other relevant phrases you may want to use.

      Price: Google Keyword Planner is free to use, as long as you have a Google Ads account set up.

      2. Google Trends

      The Google Trends website.

      When trying to nail down an idea for a successful blog post, you might want to start with Google Trends. You can enter any topic into the search box, and this tool will provide you with a ton of information and history about it.

      You can filter your results, which is especially useful if you’re trying to capture a particular region’s attention. Google Trends also provides you a list of related topics, which you can use to brainstorm more content ideas.

      Price: Google Trends is entirely free for anyone to use.

      3. BuzzSumo

      The BuzzSumo website.

      If you’re wondering what’s trending in your niche, BuzzSumo can tell you. Just search for the topic you’re interested in, and you’ll get a list of the top-performing content in that area.

      You can also enter the URL for one of your competitors. BuzzSumo will give you a list of the top-performing content from that site, so you can see what’s resonating with your potential audience.

      Price: BuzzSumo offers a seven-day free trial. After that, you can choose from several tiers starting at $79 per month.

      4. HubSpot’s Blog Ideas Generator

      HubSpot’s Blog Ideas Generator.

      When you start blogging, it’s hard to imagine ever running out of ideas. However, the day will likely come when you sit down to write and come up empty. That’s where HubSpot’s Blog Ideas Generator comes into the picture.

      Provide the generator with up to five nouns, and it will return a week’s worth of blog ideas. If you need a year’s worth of topics, you can enter some details and unlock 250 more potential blog posts.

      Price: The Blog Ideas Generator is free for anyone to use. But, if you want more ideas at once, you’ll have to trade some information to get them.

      5. EvernoteThe Evernote website.

      With all those new blog post ideas, you’re going to be doing a lot of research. If your bookmarks bar is becoming a disorganized mess, Evernote can provide a place to keep all of your screenshots, notes, and articles.

      What if you prefer a mix of handwritten and electronic notes? You can actually scan your notes with your phone into the app. You can even search these scanned documents since Evernote can read handwriting.

      Price: Evernote has several plans to choose from, including a robust free version. You can upgrade to one of the paid versions starting at $7.99 per month.

      Writing and Grammar

      Well-written, readable content is crucial for a successful blog. Even the most compelling ideas will suffer without the right words to convey them.

      6. Grammarly

      The Grammarly writing tool.

      Even the strongest writer can benefit from having a second pair of eyes look over their blog posts. Grammarly is like having an experienced editor making suggestions to improve your writing and style.

      Each time you open a new document in Grammarly, you can set goals for its tone, formality, and intent. You’ll then receive feedback to help you hit those targets. Grammarly also has a Chrome extension, so you can check your emails and Google Docs as well.

      One downside: Grammarly is currently only available in English. If you’re looking for a multilingual grammar checker, consider Language Tool, which can check your writing in more than 20 languages. It’s what our team uses to review Spanish content.

      Price: Grammarly’s free plan checks your grammar, spelling, and conciseness. The premium tier adds more style and genre checks (as well as a plagiarism detector) for $11.66 per month.

      7. Associated Press (AP) Stylebook

      The Associated Press Stylebook.

      The Associated Press (AP) Stylebook is a reference every blogger should have on their bookshelf. Using AP style for blog posts can help to keep them concise, clear, and informative.

      The AP Stylebook is updated frequently. If you buy the book from the official website, you’ll receive email notifications about these changes. It’s a simple way to keep up with stylistic adjustments.

      Price: You have multiple options for purchasing the AP Stylebook. A spiral-bound physical copy will cost you $26.95. The online stylebook starts at $22.00 for one user.

      8. Google Docs

      The Google Docs home page.

      Google Docs is a web-based word processor. You can use this application to compose, edit, and format your blog posts.

      One advantage of Google Docs is that you can access your documents anywhere, regardless of your device. For a blogger on the go, this is a must-have feature!

      Price: Google Docs is free to use. You can upgrade to G Suite for additional features and applications, starting at $6 per month.

      Project Management

      Blogs have a lot of moving parts. Project management tools can help you stay organized, so your blogging tasks stay on track.

      9. Asana

      The Asana project management tool.

      Asana enables you to build a roadmap for your blog projects. You can group tasks to make up a project or divide them into smaller chunks.

      If you collaborate with other writers on your blog, Asana is a powerful tool for team management. You’re able to see at a glance where each post is in your pipeline.

      Price: Asana’s free option allows collaboration with up to 15 people. Premium plans begin at $10.99 per user per month.

      10. Trello

      The Trello productivity tool.

      Trello’s design is based on cards, lists, and boards. It’s an intuitive system that can hold a ton of information.

      Trello is an excellent alternative to Asana if you’re looking for something a little more streamlined. You can keep all the attachments and notes you need for a task on its card. This format is also easier to handle if you’re a team of one.

      Price: Trello has a robust free option that enables you to have an unlimited number of personal boards and ten team boards. Upgraded plans begin at $9.99 per user per month.

      Design

      Gorgeous visuals to complement your words are an essential part of creating branded, shareable blog posts. You don’t need to be an artist, but the right tools can help you fake it.

      11. Adobe Photoshop

      The Adobe Photoshop website.

      When you think of photo editing software, Adobe Photoshop probably comes to mind. Whether you’re touching up a stock photo or creating a new logo, you can probably do it with Photoshop.

      One exciting aspect of this platform is that new features are always being added. One of the latest is the object selection tool. You can lasso or draw a rectangle around an object, and the selection snaps into place around it.

      Price: You can try Adobe Photoshop for free for seven days. After that, plans start at $20.99 per month.

      12. Canva

      The Canva photo editing tool.

      Canva is like Photoshop’s younger but no less accomplished sister. The free plan gives you generous access to templates, stock photos, and other design elements. However, Canva Pro contains some valuable features as well.

      With a Brand Kit, for example, you can collect the colors, fonts, and logos that make your blog recognizable all in one place. Imagine the time you could save on looking up HTML color codes!

      Price: You can upgrade to Pro for $9.95 per month. There’s also a 30-day free trial.

      13. Logaster

      The Logaster home page.

      Are you struggling to come up with a logo? If so, Logaster can generate a variety of options to choose from in seconds. Just enter your blog’s name and scroll through the possibilities.

      If you’d like, you can give Logaster more information to build your logo with. For instance, you can try specifying a color and industry for more personalization. If you’re not entirely happy with the design, you can do some editing by signing up for a free account.

      Price: You can download and use the small version of your new logo for free. However, Logaster also offers packages that include different size logos, letterheads, favicons, and more. These range from $19.99 to $89.99.

      Search Engine Optimization (SEO)

      SEO has many different facets that all need your attention. The following tools can help you analyze and optimize your blog’s content, so you’ll have a fighting chance for higher rankings.

      14. Yoast SEO

      The Yoast SEO plugin.

      If you have a blog on WordPress, you’ll probably want to install the Yoast SEO plugin. This tool makes optimizing each of your posts easy.

      For example, you can give Yoast SEO a keyphrase, and it will return actionable advice that you can use to improve your post. The premium version can even account for other forms of that keyphrase, including synonyms and plurals.

      Price: You can get started with the free version or go all-in with Yoast SEO Premium. The latter starts at $89 for one site.

      15. SEMrush

      The SEMRush website.

      It might be unfair to give SEMrush only one spot on this list, as it provides multiple tools. SEMrush offers insights on everything from social media to Pay-Per-Click (PPC) advertising.

      Most importantly, however, SEMrush’s SEO Toolkit can give you an edge over your competition. The Domain Overview lets you see which keywords your competitors use. You can use this information to hone your content plan over time.

      Price: SEMrush plans range from $83.28 to $333.28 per month. Higher tiers get you access to more reports and extended limits. The good news? We’ve worked out a free SEMrush trial for our readers, so you can see if this tool is a good fit for your blog without a long-term commitment!

      SEMrush

      16. MarketMuse

      The MarketMuse solution.

      MarketMuse is a complete, AI-based solution for content. This tool can lend a hand with anything from research to content creation.

      The ability to optimize content can make MarketMuse a valuable part of your blogging strategy. Its AI analyzes your copy and makes suggestions for the language you should use. This can boost your SEO rankings, as you’ll be using the same words your audience uses to search.

      Price: You can try MarketMuse’s Pro plan free for a month. After that, the cost is $325 per month.

      17. Ahrefs

      The Ahrefs SEO tool.

      Ahrefs is an invaluable resource if you’ve been blogging for a while and want to move to the next level. This SEO toolset can help you maximize your efforts.

      While Ahrefs offers a wide range of features, it started as a backlink checker and still excels at that task. The Content Explorer tool analyzes individual pieces of content and displays how many backlinks they receive over time.

      Price: Ahrefs offers a seven-day trial for $7. Full plans start at $82 per month for a single user.

      18. Can I Rank?

      The Can I Rank tool.

      Can I Rank may be the next best thing to hiring an analyst. This tool uses AI to deliver actionable insights that can help you improve your blog’s SEO.

      To do this, Can I Rank’s reports provide steps towards ranking for your target keywords. You’ll get suggestions for improving your current content, and new keywords you may want to focus on going forward. The AI will also connect you to other SEO tools that may be helpful.

      Price: Can I Rank has a free plan, which limits how many times you can access each report. Paid plans start at $49 per month, and a free trial is available.

      19. Ubersuggest

      The Ubersuggest Chrome extension.

      Installing the Ubersuggest Chrome extension gives you access to SEO metrics and insights every time you search.

      Ubersuggest can help refine keywords that you’ve researched. If you perform a search with one of your target keywords, you’ll receive a list of related target phrases, along with the search volume for the current month and the estimated competition for the keyword.

      Price: This extension is free. You don’t even need to create an account, although you’ll gain access to more features if you do so.

      20. LinkMiner

      The LinkMiner extension.

      Broken links can hurt your site’s SEO. They’re easy to fix but not always simple to find. Fortunately, the LinkMiner Chrome extension unearths broken links for you.

      This extension provides you with overall results for each page you analyze. It also highlights all the links in your content in red, so you can get them fixed right away.

      Price: You can use this extension for free.

      Site Management

      A user-friendly CMS can make managing your website much more straightforward. When you pair that with reliable hosting, you’ll have a solid foundation for your blog.

      21. WordPress

      The WordPress.org home page.

      WordPress powers 37% of all sites on the internet, and for good reason. This free, open-source platform is powerful, flexible, and supported by an active community.

      One appealing feature for bloggers is the Block Editor. This editor makes it easy to create stunning, rich content, with no design or coding experience necessary. The drag-and-drop interface makes it possible to rearrange your content and experiment with different possibilities.

      Price: WordPress itself is free. You’ll just have to pay for a hosting plan. You can also choose to purchase premium themes and plugins.

      22. A Managed WordPress Hosting Plan

      DreamHost managed WordPress hosting.

      You’ll probably get more out of WordPress if you complement it with a managed WordPress hosting plan. These specialized plans come with extras that can make your website building and upkeep a lot easier.

      After all, just because you’re a blogger doesn’t mean you’re a web designer. That’s why our DreamPress managed hosting plans include a website builder specifically designed for WordPress sites. After you’ve created your site, we’ll keep it safe by performing daily and on-demand backups.

      Price: Managed WordPress hosting can vary in cost depending on your provider. Our hosting plans start at $16.95 per month.

      Blog Better with DreamPress

      Our automatic updates and strong security defenses take server management off your hands so you can focus on content creation.

      23. Wordable

      The Wordable plugin.

      As awesome as the Block Editor is, there are advantages to composing your blog posts in Google Docs. However, you’ll lose a lot of time copying and reformatting your posts before publishing them.

      The Wordable plugin accomplishes all of those tasks in a single click. Wordable doesn’t just import text; it also brings along the images and headings. You can have guest writers submit their pieces as Google Docs and import them with Wordable. You don’t have to set up an account on your site for them, and you won’t have to reformat their posts either.

      Price: You can test out Wordable with a three-export trial. After that, plans start at $19 per month for one user and one WordPress site.

      Social Media

      Handling multiple social media channels can create confusion and the potential for mistakes. To avoid that, you can stay on top of your social media schedule with the help of these tools.

      24. CoSchedule

      The CoSchedule plugin.

      CoSchedule is the editorial calendar of your dreams. It can help you manage blog posts and get them onto social media platforms.

      CoSchedule’s Blog Calendar lets you see your scheduled blog and social media posts in one place. If you need to reschedule a post, you can just drag and drop it wherever you’d like. The calendar automatically adjusts the accompanying social media messages.

      Price: You can get the Blog Calendar for $14 per month. If you’d like to add more functionality with the Marketing Calendar, the price increases to $29 per month.

      25. Social Snap

      The Social Snap plugin.

      Social Snap is a social media plugin for WordPress. This solution comes with a suite of tools designed to get more traffic to your blog.

      With Social Snap, you can place social sharing buttons anywhere in your blog posts. The floating sidebar could be an effective strategy if you tend to write longer content. You can also customize the buttons to match your website’s design.

      Price: Social Snap offers plans starting at $27.30 per year. There is no free trial, but there is a 30-day money-back guarantee.

      26. Buffer

      The Buffer platform.

      If you’re in the market for a complete social media solution, you may want to check out Buffer. This platform provides tools to help you publish and analyze your content.

      Buffer’s Publish tool enables you to manage all of your social media channels from one dashboard. With some determination and a lot of coffee, you might schedule a month’s worth of content in a single afternoon.

      Price: Buffer Publish begins at $12 per month. The Pro plan enables you to schedule up to 100 posts.

      27. Click to Tweet

      The Click to Tweet plugin.

      Click to Tweet is a free plugin provided by CoSchedule. If you have your eyes set on the Twitterverse, you’ll likely want this blogging tool at your side.

      With it, you can pull out especially tweet-worthy wisdom from your content. Your readers can then share these insights with their followers in one click.

      Price: Click to Tweet is free to download and use. You do need to provide some personal information and sign up for CoSchedule’s mailing list to access the tool.

      Video

      You may already include video on your blog, as it can increase the time visitors spend on a page. If not, these solutions can get you started.

      28. YouTube

      The YouTube home page.

      You may already use YouTube to host your videos, but there’s more you can do with the platform. For example, did you know that you can live stream with YouTube?

      Live streaming is a fun way to connect with your audience and has been growing in popularity in recent years. It’s a great way to build a sense of community around your blog.

      Price: YouTube is free to use. All you need is a Google account.

      29. Adobe Premiere Rush

      The Adobe Rush website.

      If creating video content sounds like a lot of work, you can check out Adobe Premiere Rush. This helpful tool makes producing a video (almost) as easy as posting to social media.

      With Adobe Premiere Rush, you can capture and edit footage right from your mobile phone. You can even add graphics, overlays, and voiceovers. Then you’ll be able to share the video to your YouTube channel, Instagram account, Facebook page, and other social media platforms.

      Price: Adobe Premiere Rush offers a free trial that limits you to three exports. After that, you can access the software for $9.99 per month.

      Analytics

      By keeping an eye on your blog’s statistics, you’ll be able to see where you can improve. If you’re not a data analyst, you might appreciate some help in that department.

      30. Google Analytics

      The Google Analytics website.

      If you haven’t already installed Google Analytics on your blog, what are you waiting for? Its many tools will give you access to the metrics you need for running a successful blog.

      While your hosting provider may provide you with some traffic data, Google Analytics offers you a wide range of numbers. Knowing where your traffic is coming from will help you focus your efforts on those channels.

      Price: Google Analytics is free to use. You just need to add a tracking code to your website.

      31. MonsterInsights

      The MonsterInsights plugin.

      MonsterInsights is a plugin that helps make Google Analytics even more powerful. It’s a match made in blogging heaven.

      A favorite feature of MonsterInsights is the Google Analytics dashboard. Instead of navigating away from WordPress, you can view all that data right in your admin dashboard. You’ll also be able to see what’s happening on your blog in real-time.

      Price: MonsterInsights plans begin at $99.50 per year. There’s no free trial, but there is a 14-day money-back guarantee.

      Marketing Your Blog

      Having the best content on the web won’t do you any good if no one knows it exists. Fortunately, you can get your blog in front of more people with these tools.

      32. OptinMonster

      The OptinMonster plugin.

      As a blogger, convincing readers to sign up for your email newsletter is critical. OptinMonster can help you create opt-in campaigns that turn casual readers into devoted fans.

      If your opt-in isn’t user-friendly, it’s unlikely to convert. OptinMonster gives you powerful targeting options, such as device-based targeting. This ensures that mobile users only see campaigns that are optimized for their devices.

      Price: OptinMonster’s basic plan will cost you $9 per month.

      33. Hunter

      The Hunter tool.

      Guest posting is a tried-and-true link building technique for bloggers. Crafting a strong pitch is hard enough, but sometimes the most challenging part is finding the right email to send it to.

      To make things easier, you can simply enter a domain name into Hunter’s search box, and the tool returns every email address it can find for that company. You can use this to see a particular individual’s email or search for a role, such as “submissions@” or “editorial@”.

      Price: You can perform 50 free searches per month. Paid plans start at $34 per month.

      34. NinjaOutreach

      The NinjaOutreach platform.

      Partnering with an influencer can increase your blog’s audience. NinjaOutreach enables you to filter through lots of influencers in your niche, so you can find the right one.

      Whether you’re targeting Instagram, Twitter, TikTok, or YouTube, NinjaOutreach has you covered with its extensive database of influencers. You can even find other bloggers who may be interested in collaboration.

      Price: NinjaOutreach offers a 7-day free trial. A monthly plan starts at $119.

      35. Mailchimp

      The Mailchimp platform.

      There’s more to email marketing than sending out a blast whenever you publish a new post. Mailchimp helps you organize your list and send out updates on time.

      No one wants to read ugly emails, but thanks to Mailchimp’s drag-and-drop builder, you can make customizations and even add images and videos. Then, real-time analytics lets you monitor how effective your campaigns are.

      Price: Mailchimp offers a generous free plan to get you started. You can get an upgraded email-only plan for $9.99 per month.

      36. Teachable

      The Teachable home page.

      Sharing your knowledge is an effective way of establishing yourself as an expert in your blogging niche. Unfortunately, setting up an online course can be a challenge.

      Teachable is a complete solution for building and running an online course. You can make your lessons extra special by taking advantage of Teachable’s live features. For example, you can schedule one-on-one sessions with your students to check in on progress and answer questions.

      Price: Teachable’s Basic plan comes with everything you need to create your first course, and costs $29 per month.

      11 Blogging Tools We Use on the DreamHost Blog

      While all of the blogging tools on this list are excellent, we have some favorites we use for the DreamHost blog itself. Here’s some extra love for the solutions that make our job so much easier:

      1. Google Docs: When it comes to collaboration, you can’t beat Google Docs.
      2. Grammarly: Even the most seasoned writers miss an Oxford comma from time to time.
      3. Language Tool: This is a useful grammar checker if you need support in languages other than English. We use it for our Spanish content!
      4. MarketMuse: If you love the content on our blog, we have to give some credit to MarketMuse.
      5. WordPress: Like so much of the internet, we love how easy WordPress is to use. It really is our favorite blogging tool!
      6. DreamPress Hosting: Not to toot our own horn, but we’re really good at this hosting thing.
      7. OptinMonster: No one wants to annoy their blog visitors with unwanted opt-ins, and we’re no exception.
      8. Yoast SEO: We’re proud of what we publish, and Yoast SEO helps ensure that our blog content gets seen by plenty of visitors.
      9. CoSchedule: Keeping track of when and where we’ve published our content is much easier thanks to CoSchedule.
      10. Canva: The one-click resize option for various social media channels is a gift.
      11. Google Analytics: We use Google Analytics to be sure we’re giving you more of what you want.

      If you’re not sure where to begin, the above tools should start you off on the right foot.

      Ready to Launch Your WordPress Blog?

      Whether you need help choosing a blogging platform, understanding affiliate marketing, or picking a WordPress theme, we can help! Subscribe to our monthly digest so you never miss an article.

      What’s Your Next Blogging Tool?

      Handling a blog on your own is a difficult task. Taking advantage of a few of the many blogging tools available can give you back some valuable time.

      Today, we’ve looked at a few reasons why you might want to invest in some blogging tools. If you’re just getting started with your blog, you might try out Google Docs and Grammarly to keep your content organized and polished. If you’re ready to step up your marketing game, Mailchimp can give you the edge you’re looking for.

      Ready to put those new blogging tools to work? It may be a smart time to upgrade your hosting service, to prepare for all the new traffic you’ll be getting. Check out our managed WordPress hosting plans!



      Source link

      How To Package and Publish a Snap Application on Ubuntu 18.04


      The author selected the Electronic Frontier Foundation to receive a donation as part of the Write for DOnations program.

      Introduction

      One of the largest challenges in application development is the final step of distributing the finished product to your users or customers. Many existing application deployment methodologies lack user-friendliness and security, or do not provide methods for automatically updating an application once it has been installed.

      Snap is a modern application packaging format with powerful sandboxing and security features, including file system isolation, automatic updates, and integrated dependency management. Snap applications, known as Snaps, can be downloaded and installed using a command-line program, much like apt or yum. Ubuntu comes with Snap pre-installed, meaning that there is a wide audience for Snap applications.

      In this tutorial, you will create a Snap application and publish it on the Snap Store.

      Prerequisites

      To complete this tutorial, you will need:

      • One Ubuntu 18.04 server set up by following the Initial Server Setup with Ubuntu 18.04, including a sudo non-root user.

      • An application that you wish to package and release as a Snap. This may be a complex application that you created, a common open-source project, or a simple “Hello, world!” program. If you don’t already have an application, Step 1 of this tutorial will cover how you can create a Hello World program in Go.

      • An account on the Snapcraft Developer Dashboard.

      Once you have these ready, log in to your server as your non-root user to begin.

      Step 1 — Getting Your Application Ready for Packaging

      Firstly, you’ll prepare your application for packaging as a Snap application by ensuring that everything required is present in a single directory.

      Start by creating a new directory for your Snap and moving into it:

      • mkdir ~/your-snap
      • cd ~/your-snap

      Next, if you already have an application, put a complete copy of the source code for your application into the directory that you just created. The process here will vary significantly depending on the exact application that you’re packaging, however in the case that the source code is stored in a Git repository, you can git init a repository in the directory and pull down all of the relevant code.

      If you don’t yet have an application that you’d like to package, you may create a “Hello World” program to use instead. If you would like more context on writing this program with Go, check out the How to Write Your First Program in Go tutorial.

      You can do this by first creating a new Go file and opening it using your preferred text editor:

      Next, add the following code to the file:

      helloworld.go

      package main
      import "fmt"
      func main() {
        fmt.Println("Hello, world!")
      }
      

      Then save and exit the file.

      If you don’t have Go installed, you can install it using the following command:

      • sudo apt install golang-go

      Once Go is installed, you can run your new program to check that it is working:

      You’ll see the following output:

      Output

      Hello, world!

      You’ve prepared your application for packaging as a Snap. Next, you will install the software required to begin the packaging process.

      Step 2 — Installing Snapcraft

      In this step, you’ll download and install Snapcraft, which is the name of the official Snap application packaging tool. Snapcraft is available from the Snap Store, which is built into Ubuntu by default. This means that you can install Snapcraft from the command-line using the snap command.

      The snap command is equivalent to the apt command, but you can use it to install software from the Snap Store, rather than packages from the Apt repositories.

      In order to install Snapcraft, run the following command:

      • sudo snap install snapcraft --classic

      You use the --classic command argument so that Snapcraft installs without the strict sandboxing features that Snaps normally use. Snapcraft requires this argument as it needs more privileged access to your system to reliably package applications.

      Once you’ve installed Snapcraft, you’ll see the following:

      Output

      snapcraft 3.9.8 from Canonical✓ installed

      Finally, you can double-check the Snapcraft installation by running:

      This will display something similar to:

      Output

      snapcraft, version 3.9.8

      Now that you’ve installed Snapcraft, you can begin to define the configuration and metadata for your Snap application.

      In this step, you will begin to define the configuration, structure, and metadata for your Snap application.

      Begin by ensuring that you are still working in your Snap application directory:

      Next, create and edit the snapcraft.yaml file using your preferred text editor:

      You’ll use the snapcraft.yaml file to store all of the configuration for your Snap application, including the name, description, and version, as well as settings related to dependency management and sandboxing.

      Begin by defining the name, summary, description, and version number for your application:

      snapcraft.yaml

      name: your-snap
      summary: A summary of your application in 78 characters or less.
      description: |
        A detailed description of your application.
        The description can have multiple lines.
      version: '1.0'
      

      The name of your Snap needs to be unique if you wish to publish it on the Snap Store—search for other applications with the same name to make sure that it isn’t already taken.

      Next, you can define the command(s) that you wish to associate with your application. This will allow your Snap to be used directly from the Bash command-line as a normal command.

      Add the following to your snapcraft.yaml file:

      snapcraft.yaml

      . . .
      apps:
        your-snap-command:
          command: your-snap
      

      your-snap-command is the name of the command that you want to define. For example, you may wish to use the command helloworld to run your Hello World program.

      You use command: your-snap to tell Snapcraft what to do when the application command is run. In the case of the Hello World program, you would use the value helloworld to reference the helloworld.go file, which will allow Snapcraft to run your program successfully.

      This results in the following example configuration:

      snapcraft.yaml

      apps:
        helloworld:
          command: helloworld
      

      If the command name matches the Snap name exactly, you’ll be able to run it directly from the command-line. If the command does not match the Snap name, the command will be automatically prefixed with the name of the Snap. For example, helloworld.command1.

      Finally, you can define the parts that make up your Snap application. Snap applications are made up of multiple parts, which are all of the components that make up your application. In many cases, there is only one part, which is the application itself.

      Each part has an associated plugin. For example, for components of your application written in Ruby, the ruby plugin is used, and for components written in Go, the go plugin is used.

      You can use the Snapcraft list-plugins command to identify the correct plugin(s) for your application:

      This will output a list similar to the following:

      Output

      ant catkin-tools conda dump gradle make nil python rust autotools cmake crystal go kbuild maven nodejs qmake scons catkin colcon dotnet godeps kernel meson plainbox-provider ruby waf

      The most common plugins are those for common programming languages, such as Go, Rust, Ruby, or Python.

      Once you have identified the correct plugins for your application, you can begin to add the parts configuration to your snapcraft.yaml file:

      snapcraft.yaml

      . . .
      parts:
        your-snap:
          plugin: plugin-name
          source: .
      

      You use the source configuration parameter to specify the relative path to the source code for your application. Usually this will be the same directory as the snapcraft.yaml file itself, so the source value is a single dot (.).

      Note: If your application component has any dependencies that are required for either building or running it, you can specify these using the build-packages and stage-packages attributes. The specified dependency names will then be automatically fetched from the default package manager for your system.

      For example:

      snapcraft.yaml

      parts:
        your-snap:
        plugin: plugin-name
        source: .
        build-packages:
        - gcc
        - make
        stage-packages:
        - libcurl4
      

      Some Snapcraft plugins have their own specific options that may be required for your application, so it’s worthwhile reviewing the relevant manual pages for your plugin:

      • snapcraft help plugin-name

      In the case of Go applications, you would also specify the go-importpath. For the Hello World configuration, this results in the following example configuration:

      snapcraft.yaml

      parts:
        helloworld:
          plugin: go
          source: .
          go-importpath: helloworld
      

      You can leave your snapcraft.yaml file open to add further configuration in the next step.

      You’ve defined the base configuration for your Snap application. Next, you’ll configure the security and sandboxing aspects of your application.

      Step 4 — Securing Your Snap Application

      Snap applications are designed to run within a sandboxed environment, so in this step you’ll configure sandboxing for your Snap. Firstly, you’ll need to enable sandboxing for your application, known within Snapcraft as confinement.

      Add the following to your snapcraft.yaml file:

      snapcraft.yaml

      . . .
      confinement: strict
      

      This will enable sandboxing for your application, preventing it from accessing the internet, other running Snaps, or the host system itself. However, in most cases, applications do need to be able to communicate outside of their sandbox like when they need to access the internet or read/write to the file system.

      These permissions, known within Snapcraft as interfaces, can be granted to your Snap application using Plugs. Using Plugs, you can have fine-grain control over the sandboxing for your application, to give it the access that it requires and nothing more (principle of least privilege).

      The exact interfaces that are required will vary depending on your application. Some of the most common interfaces are:

      • audio-playback - Allows audio output/playing sounds.
      • audio-record - Allows audio input/recording.
      • camera - Allows access to connected webcams.
      • home - Allows access to non-hidden files within your home directory.
      • network - Allows access to the network/internet.
      • network-bind - Allows binding to ports to operate as a network service.
      • system-files - Allows access to the entire file system of the host machine.

      The full list of available interfaces can be found within the Snapcraft documentation under Supported Interfaces.

      Once you’ve identified all of the required interfaces for your application, you can begin to assign these to plugs within your snapcraft.yaml file.

      The following example configuration will allow the application to access the network and users’ home area:

      snapcraft.yaml

      . . .
      plugs:
        your-snap-home:
          interface: home
        your-snap-network:
          interface: network
      

      Save and exit your file.

      The name of the Plug should be a descriptive name to help users identify the purpose of the Plug.

      You’ve enabled sandboxing for your Snap and configured some Plugs to grant limited access to system resources. Next you’ll finish building your Snap app.

      Step 5 — Building and Testing Your Snap Application

      Now that you’ve written all of the required configuration for your Snap, you can proceed with building it and testing the Snap package locally.

      If you’ve been following along using a Hello World program as your application, your complete snapcraft.yaml file will now look similar to the following:

      snapcraft.yaml

      name: helloworld
      summary: A simple Hello World program.
      description: |
        A simple Hello World program written in Go.
        Packaged as a Snap application using Snapcraft.
      version: '1.0'
      confinement: strict
      
      apps:
        helloworld:
          command: helloworld
      
      parts:
        helloworld:
          plugin: go
          source: .
          go-importpath: helloworld
      
      plugs:
        helloworld-home:
          interface: home
        helloworld-network:
          interface: network
      

      In order to build your Snap application, run the snapcraft command from within the directory for your Snap:

      Snapcraft will then automatically launch a virtual machine (VM) and begin building your Snap. Once complete, Snapcraft will exit and you will see something similar to the following:

      Output

      Snapped your-snap_1.0_amd64.snap

      You can now install your Snap locally in order to check that it is working:

      • sudo snap install your-snap.snap --dangerous

      The --dangerous command argument is required as you are installing a local Snap that has not been signed.

      Output

      your-snap 1.0 installed

      Once the installation process is complete, you can then run your Snap using its associated command. For example:

      In the case of the example Hello World program, the following output would be:

      Output

      Hello, world!

      You can also view the sandboxing policy for your Snap to make sure that the assigned permissions have been properly granted:

      • snap connections your-snap

      This will output a list of Plugs and interfaces, similar to the following:

      Output

      snap connections your-snap Interface Plug Slot Notes home your-snap:your-snap-home :home - network your-snap:your-snap-network :network -

      In this step, you built your Snap and installed it locally to test that it is working. Next, you’ll publish your Snap on the Snap Store.

      Step 6 — Publishing Your Snap

      Now that you’ve built and tested your Snap application, it’s time to release it on the Snap Store.

      Begin by logging in to your Snap Developer account using the Snapcraft command-line application:

      Follow the prompts to enter your email address and password.

      Next, you need to register the name of the application on the Snap Store:

      • snapcraft register your-snap

      Once you’ve registered the Snap name, you can push the built Snap package to the store:

      • snapcraft push your-snap.snap

      You’ll see output similar to the following:

      Output

      Preparing to push 'your-snap_1.0_amd64.snap'. Install the review-tools from the Snap Store for enhanced checks before uploading this snap. Pushing 'your-snap_1.0_amd64.snap' [===================================================================================================] 100% Processing...| Ready to release! Revision 1 of 'your-snap' created.

      Each time you push to the Snap store, the revision number is incremented, starting at one. This is useful to help identify the various different builds of your Snap.

      Finally, you can release your Snap to the public:

      • snapcraft release your-snap revision-number channel

      If this is the first time you’ve pushed to the Snap Store, the revision number will be 1. You can also choose between releasing to the stable, candidate, beta, and edge channels, if you have multiple versions of your application at different stages of development.

      For example, the following command will release revision 1 of the Hello World Snap to the stable channel:

      • snapcraft release helloworld 1 stable

      You’ll see output similar to the following:

      Output

      Track Arch Channel Version Revision latest amd64 stable 1.0 1 candidate ^ ^ beta ^ ^ edge ^ ^ The 'stable' channel is now open.

      You can now search for your application on the Snap Store and install it on any of your devices.

      Snapcraft store with HelloWorld App displayed from search results

      In this final step, you uploaded your built Snap package to the Snap Store and released it to the public.

      Conclusion

      In this article you configured and built a Snap application, and then released it to the public via the Snap Store. You now have the foundational knowledge required to maintain your application and building new ones.

      If you wish to explore Snaps further, you may wish to browse the full Snap Store. You may also wish to review the Snapcraft YAML Reference to understand more about it and identify additional attributes for your Snap configuration.

      Finally, if you’d like to investigate Snap development further, you may enjoy reading about and implementing Snap Hooks, which allow Snaps to dynamically react to system changes such as upgrades or security policy adjustments.



      Source link