add npm packages, start working on a call to action button for articles, add hardware dep article
All checks were successful
Hugo / build (push) Successful in 1m6s

This commit is contained in:
brooke 2024-05-30 17:32:19 -04:00
parent b8addf6071
commit 498f77b0c9
5 changed files with 1688 additions and 4 deletions

2
.gitignore vendored
View file

@ -11,6 +11,4 @@ hugo.linux
# Temporary lock file while building
/.hugo_build.lock
package.json
package-lock.json
node_modules

View file

@ -1,6 +1,39 @@
---
title: "Hardware Deployment"
title: "Hardware Installation"
draft: false
description: "Learn how to build Blowfish manually."
description: "Learn how MycoSystems can help improve your business workflow through their hardware installation services."
---
## Introduction
In this article, we will cover the benefits of our hardware installation services and how they can help your business or organization succeed.
## The Importance of Network Attached Storage (NAS)
A NAS offers an efficient and centralized storage system that allows multiple users within a network to access and share files securely. This is particularly important for businesses with remote workers or those needing to store large amounts of data, such as renders, media files, and design projects. We can install and configure your NAS to ensure smooth file sharing and optimal performance for your entire organization, we have experience with many different operating systems to make sure maintainence is a breeze:
- **CasaOS** — a simple, easy to maintain, open source operating system to manage storage and services. It comes with many "one-click install" services that take most of the work out of maintaining a complex deployment for internal services.
- **TrueNAS Scale** — based on linux, TrueNAS Scale is a fast, efficient, and extensible NAS. TrueNAS allows you to maintain periodic tests on large clusters of drives, containers for easy deployment of services like Syncthing or Minio, and has some of the most in-depth documentation of any OS we have experience with.
## Secure Office VPNs for Remote Workers
Remote work has become increasingly popular in recent years, studies over the past 3 years have shown significant links to higher productivity, lower burnout rates, and high satisfaction overall when employees or co-owners can choose their own hours and work from an environment where they feel most comfortable.
However, ensuring the security of remote workers' connections is paramount. We offer a fully managed remote access VPN based on WireGuard & Rosenpass, a "post-quantum-secure" encryption method. We also fully understand how important self-management is for small and medium-sized companies, so we provide deployments using [Firezone](https://www.firezone.dev/) and [netbird](https://netbird.io/) either fully managed by MycoSystems or managed by your own IT. Both pieces of software offer superior control over WireGuard without draining engineer time; both let you connect multiple private networks like offices, datacenters, etc. Both allow users to run client applications on Android, iOS, Linux, Windows, macOS, BSD, etc.
## Internal Clusters for Enhanced Compute
Processing large amounts of data and creating high-quality outputs require significant computational power in some cases.
We offer hardware installation services designed to help organizations create internal clusters that can distribute rendering tasks across multiple machines, greatly improving efficiency and speeding up the render process. This means faster turnaround times for projects.
What kind of software do we support?
- **Adobe Media Encoder**
- **Blender**
- **Meshroom**
- **NerfStudio**
- **Forgejo/Drone CI Actions**
#### Contact us today to learn more about how we can help streamline your workflow and improve productivity across your organization.

View file

@ -0,0 +1,185 @@
{{ define "main" }}
{{ .Scratch.Set "scope" "single" }}
<article>
{{ if .Params.showHero | default (.Site.Params.article.showHero | default false) }}
{{ $heroStyle := .Params.heroStyle }}
{{ if not $heroStyle }}
{{ $heroStyle = .Site.Params.article.heroStyle }}
{{ end }}
{{ $heroStyle := print "partials/hero/" $heroStyle ".html" }}
{{ if templates.Exists $heroStyle }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "partials/hero/basic.html" . }}
{{ end }}
{{ end }}
<header id="single_header" class="mt-5 max-w-prose">
{{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }}
{{ partial "breadcrumbs.html" . }}
{{ end }}
<h1
class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral"
>
{{ .Title | emojify }}
</h1>
<div
class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden"
>
{{ partial "article-meta/basic.html" (dict "context" . "scope" "single") }}
</div>
{{ $authorsData := .Site.Data.authors }}
{{ $taxonomies := .Site.Taxonomies.authors }}
{{ $baseURL := .Site.BaseURL }}
{{ $taxonomyLink := 0 }}
{{ $showAuthor := 0 }}
{{ if not (strings.HasSuffix $baseURL "/") }}
{{ $baseURL = delimit (slice $baseURL "/") "" }}
{{ end }}
{{ if not (.Params.showAuthorBottom | default ( .Site.Params.article.showAuthorBottom | default false)) }}
{{ if .Params.showAuthor | default (.Site.Params.article.showAuthor | default true) }}
{{ $showAuthor = 1 }}
{{ partial "author.html" . }}
{{ end }}
{{ range $author := .Page.Params.authors }}
{{ $authorData := index $authorsData $author }}
{{- if $authorData -}}
{{ range $taxonomyname, $taxonomy := $taxonomies }}
{{ if (eq $taxonomyname $author) }}
{{ $taxonomyLink = delimit (slice $baseURL "/authors/" $author) "" }}
{{ end }}
{{ end }}
{{ partial "author-extra.html" (dict "context" . "data" $authorData "link" $taxonomyLink) }}
{{- end -}}
{{ end }}
{{ if or $taxonomyLink $showAuthor }}
<div class="mb-5"></div>
{{ end }}
{{ end }}
</header>
<section
class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row"
>
{{ if or (and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
.TableOfContents "<ul")) (.Site.Params.article.showRelatedPosts | default false)
}}
<div
class="order-first lg:ml-auto px-0 lg:order-last ltr:lg:pl-8 rtl:lg:pr-8"
>
<div
class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky {{ if hasPrefix .Site.Params.header.layout "fixed" -}}
lg:top-[140px]
{{ else }}
lg:top-10
{{ end }}
"
>
{{ if and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
.TableOfContents "<ul")
}}
{{ partial "toc.html" . }}
{{ end }}
{{ if .Site.Params.article.showRelatedPosts |
default false
}}
sd
{{ end }}
</div>
</div>
{{ end }}
<div class="min-w-0 min-h-0 max-w-fit">
{{ partial "series/series.html" . }}
<div class="article-content max-w-prose mb-20">
{{ .Content | emojify }}
<div>
<div
class="flex px-4 py-2 mb-8 text-base rounded-md bg-primary-100 dark:bg-primary-900"
>
<span
class="flex items-center justify-between grow dark:text-neutral-300"
><span class="prose dark:prose-invert"
>Like what you see? Drop us a message!</span
>
<a href="mailto:contact@myco.systems"
><button
class="px-4 !text-neutral !no-underline rounded-md bg-primary-600 hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
>
contact@myco.systems
</button></a
></span
>
</div>
</div>
</div>
{{ if (.Params.showAuthorBottom | default ( .Site.Params.article.showAuthorBottom | default false)) }}
{{ if .Params.showAuthor | default (.Site.Params.article.showAuthor | default true) }}
{{ $showAuthor = 1 }}
{{ partial "author.html" . }}
{{ end }}
{{ range $author := .Page.Params.authors }}
{{ $authorData := index $authorsData $author }}
{{- if $authorData -}}
{{ range $taxonomyname, $taxonomy := $taxonomies }}
{{ if (eq $taxonomyname $author) }}
{{ $taxonomyLink = delimit (slice $baseURL "/authors/" $author) "" }}
{{ end }}
{{ end }}
{{ partial "author-extra.html" (dict "context" . "data" $authorData "link" $taxonomyLink) }}
{{- end -}}
{{ end }}
{{ if or $taxonomyLink $showAuthor }}
<div class="mb-10"></div>
{{ end }}
{{ end }}
{{ partial "series/series-closed.html" . }}
{{ partial "sharing-links.html" . }}
{{ partial "related.html" . }}
</div>
{{ $translations := .AllTranslations }}
{{ with .File }}
{{ $path := .Path }}
{{ range $translations }}
{{ $lang := print "." .Lang ".md" }}
{{ $path = replace $path $lang ".md" }}
{{ end }}
<script>
var oid = "views_{{ $path }}"
var oid_likes = "likes_{{ $path }}"
</script>
{{ end }}
{{ $jsPage := resources.Get "js/page.js" }}
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint "sha512" }}
<script
type="text/javascript"
src="{{ $jsPage.RelPermalink }}"
integrity="{{ $jsPage.Data.Integrity }}"
></script>
</section>
<footer class="pt-8 max-w-prose print:hidden">
{{ partial "article-pagination.html" . }}
</footer>
</article>
{{ end }}

1458
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

10
package.json Normal file
View file

@ -0,0 +1,10 @@
{
"dependencies": {
"caniuse-lite": "^1.0.30001620",
"tailwindcss": "^3.4.3"
},
"devDependencies": {
"prettier": "^3.2.5",
"prettier-plugin-go-template": "^0.0.15"
}
}