James Flower

.NET Developer working on the web and cloud

Setup Windows Terminal to use Cloudflare Access for SSH authentication

Posted on
3 min read

Windows Terminal is a modern terminal application, which supports a wide variety of customisation through profiles. Windows Terminal Profiles can be used to configure terminal colours, fonts, and commands. We are going to use this, to setup a new Windows Terminal profile to connect to a server using SSH while authenticating with Cloudflare Access. Setup Short Lived Certificates The first step in this process is to setup an SSH server which is configured to use Cloudflare Access and Short Live

Read more...

Browser based SSH with Short Lived Certificates using Cloudflare Zero Trust

Posted on
4 min read

SSH is the de-facto standard for remotely accessing Unix computers. However, it requires pre-configured keys and an SSH client to be available on the client computer. By using a Cloudflare Tunnel and Cloudflare Access you can use any web browser as the SSH client, and use Cloudflare Access for authenticating to the remote computer instead of SSH keys. Introduction In this post I am going to provide details on how to configure Cloudflare Zero Trust with Cloudflare Access and Cloudflare Tunnels

Read more...

Setup Nginx as a Reverse Proxy and WAF with ModSecurity in Docker

Posted on
7 min read

Nginx is a highly versatile web server which can effectively function as a reverse proxy and web application firewall (WAF). To function as a WAF, the ModSecurity WAF module is usually used with the OWASP ModSecurity Core Rule Set. The ModSecurity WAF module will check incoming requests and outgoing responses against the rules it has loaded. If the request matches one of the rules, it will be ended before it is passed to the web application. The OWASP ModSecurity Core Rule Set contains generic

Read more...

Star Trek or Star Wars – Binary Classification using ML.NET

Posted on
4 min read

I have been looking for an opportunity to try out machine learning and recently had a change. Given my background with ASP.NET, using ML.NET seemed the clear choice as I am already familiar with C# and the .NET ecosystem. To try out ML.NET, I decided to make a binary classifier which would accept a piece of text and decide if the text is most likely to be related to Star Trek or Star Wars. Not that I am saying one is better (or worse) than the other. Finding the Data The first step with any

Read more...

Using Azure SignalR Service in Static Web Apps (SWA) Managed Functions

Posted on
4 min read

I recently migrated my YouTube Remote project from ASP.NET 4 to use serverless computing, such as Azure SignalR Service and Azure Functions with Static Web Apps. This aim of the YouTube Remote is to have a “display” which shows a YouTube video, and a “remote” to have play and pause controls. The remote could be a different browser window, or an entirely different device such as a mobile phone. In the ASP.NET 4 Web App version of the project, all the communication between the display and remote

Read more...

GitHub Importer - There was an error pushing commits to GitHub

Posted on
2 min read

I was recently trying to import some repositories from GitLab to GitHub, and kept receiving an error the title "We found an error during import" and message "There was an error pushing commits to GitHub." This is a pretty generic error message and didn’t give me much to go on to start figuring out why the GitHub repository import process was failing. I started to wonder if the username and password (or access token) combination I had provided was incorrect, but they worked when cloning the repo

Read more...

Using Ghost as a Headless CMS with Static Site Generator and Deploying to Cloudflare Pages

Posted on
5 min read

Most blogging websites are powered by server-side software such as Ghost or WordPress. This is extremely useful since they can support complex post editors, schedule posts to be released later, and allow users to register on the website. I self-host Ghost in a dedicated virtual machine, but this mean that I have no redundancy and if I have to do a reboot of the virtual machine for updates it results in my blog content being unavailable for a few minutes. Eventually, I decided I wasn’t happy wit

Read more...

Setup Gitpod for a .NET 6+ Web App

Posted on
2 min read

Gitpod is a service which provides development environments in the cloud, but a .NET web app will need some extra configuration to make it accessible when running from a development workspace. You can use Gitpod by logging in with an account from a source control provider (such as GitHub or GitLab), and then selecting the repository you would like to use from the list of available repositories. After you have selected a repository, a new workspace is created and the files will be cl

Read more...

Protect Microsoft SQL Server with a Cloudflare Tunnel and Cloudflare Access

Posted on
4 min read

Microsoft SQL Server is a database server engine used in a wide variety of organisations for storing their data. Sometimes, it can be necessary to provide access to this data from remote locations (such as to remote workers, or to services running in remote locations). A Cloudflare Tunnel when combined with Cloudflare Access can provide secure access to a Microsoft SQL Server instance without requiring any ports to be opened or a VPNs to be configured. Introduction In this post, I am goin

Read more...

Setup GitPod for Vue.js Development

Posted on
5 min read

GitPod is a cloud-based development environment which can be used to work with a variety of frameworks, including Vue.js. It is designed to be quick to spin up new instances of a development environment through automated scripts. One of the advantages of this is that it reduces the chance of encountering issues due to differences in environments, and ensures everyone has the tools they need to start working on a project quickly. However, I recently encountered a few issues when attemptin

Read more...