41554 blogs · [ { "id": "01a087d8-8c29-7291-915a-f75112e80efb", "title": "Upload Public SSH Keys using Ansible", "url": "https://ruan.dev/blog/2020/10/26/upload-public-ssh-keys-using-ansible", "published_at": "2020-10-26T07:44:25+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75113b5996e", "title": "Easy Ad-Hoc VPNs with sshuttle", "url": "https://ruan.dev/blog/2020/10/26/easy-ad-hoc-vpns-with-sshuttle", "published_at": "2020-10-26T06:59:44+00:00" }, { "id": "01a087d8-8c29-7291-915a-f751142a117d", "title": "Use a SSH Jump Host with Ansible", "url": "https://ruan.dev/blog/2020/10/26/use-a-ssh-jump-host-with-ansible", "published_at": "2020-10-26T05:25:18+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511478f18e", "title": "Basic Ping Role with Ansible in a Playbook", "url": "https://ruan.dev/blog/2020/10/23/basic-ping-role-with-ansible-in-a-playbook", "published_at": "2020-10-23T13:13:16+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75115609a45", "title": "Using the libvirt provisioner with Terraform for KVM", "url": "https://ruan.dev/blog/2020/10/08/using-the-libvirt-provisioner-with-terraform-for-kvm", "published_at": "2020-10-08T00:06:21+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75115d866c8", "title": "Setup a KVM Host for Virtualization on OneProvider", "url": "https://ruan.dev/blog/2020/10/07/setup-a-kvm-host-for-virtualization-on-oneprovider", "published_at": "2020-10-07T23:31:43+00:00" }, { "id": "01a087d8-8c29-7291-915a-f751164fbd66", "title": "Using the local-exec provisioner with Terraform", "url": "https://ruan.dev/blog/2020/09/27/using-the-local-exec-provisioner-with-terraform", "published_at": "2020-09-27T17:08:49+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75117155f4f", "title": "Setup a NFS Server with Docker", "url": "https://ruan.dev/blog/2020/09/20/setup-a-nfs-server-with-docker", "published_at": "2020-09-20T16:07:09+00:00" }, { "id": "01a087d8-8c29-7291-915a-f751175a0c90", "title": "Using if statements in bash to check if environment variables exist", "url": "https://ruan.dev/blog/2020/08/14/using-if-statements-in-bash-to-check-if-environment-variables-exist", "published_at": "2020-08-14T11:00:25+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75117b5964b", "title": "Getting Started on Logging with Loki using Docker", "url": "https://ruan.dev/blog/2020/08/13/getting-started-on-logging-with-loki-using-docker", "published_at": "2020-08-13T13:39:28+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511896ce86", "title": "Setup a Hugo Blog with the Kiera Theme", "url": "https://ruan.dev/blog/2020/06/14/setup-a-hugo-blog-with-the-kiera-theme", "published_at": "2020-06-14T13:23:51+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75118fcd7f8", "title": "Using ProxyJump with SSH for VMs with No Public IPs", "url": "https://ruan.dev/blog/2020/06/13/using-proxyjump-with-ssh-for-vms-with-no-public-ips", "published_at": "2020-06-13T18:06:35+00:00" }, { "id": "01a087d8-8c29-7291-915a-f751196bd053", "title": "Using a SSH Reverse Tunnel to Access Nodes on Private Ranges", "url": "https://ruan.dev/blog/2020/06/13/using-a-ssh-reverse-tunnel-to-access-nodes-on-private-ranges", "published_at": "2020-06-13T17:59:27+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511a5807a5", "title": "Get the Top 10 Items on Hackernews in Python", "url": "https://ruan.dev/blog/2020/06/13/get-the-top-10-items-on-hackernews-in-python", "published_at": "2020-06-13T17:53:20+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511ab62266", "title": "Improve MySQL Write Performance using Batch Writes", "url": "https://ruan.dev/blog/2020/06/13/improve-mysql-write-performance-using-batch-writes", "published_at": "2020-06-13T17:31:32+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511ae43c6d", "title": "Increase Performance with your Ghost Blog on Docker", "url": "https://ruan.dev/blog/2020/06/08/build-a-ghost-blog-with-nginx-cache-on-docker", "published_at": "2020-06-08T21:28:07+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511b75f4a9", "title": "Ingesting Pocket.com Links into Elasticsearch", "url": "https://ruan.dev/blog/2020/06/08/ingesting-pocket-items-into-elasticsearch", "published_at": "2020-06-08T21:06:23+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511b88f874", "title": "Using Python RQ for Task Queues in Python", "url": "https://ruan.dev/blog/2020/05/16/using-python-rq-for-task-queues-in-python", "published_at": "2020-05-16T19:12:36+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511c6937b2", "title": "Selecting and Returning Specific Data with JQ", "url": "https://ruan.dev/blog/2020/05/09/selecting-and-returning-specific-data-with-jq", "published_at": "2020-05-09T20:23:00+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511d03b189", "title": "Server Backups to Google Drive using the Drive CLI tool", "url": "https://ruan.dev/blog/2020/05/08/server-backups-to-google-drive-using-the-drive-cli-tool", "published_at": "2020-05-08T16:43:35+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511d988db8", "title": "How to setup a Redis Exporter for Prometheus", "url": "https://ruan.dev/blog/2020/05/05/how-to-setup-a-redis-exporter-for-prometheus", "published_at": "2020-05-05T21:14:52+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511dc60d72", "title": "Nginx Analysis Dashboard using Grafana and Elasticsearch", "url": "https://ruan.dev/blog/2020/04/28/nginx-analysis-dashboard-using-grafana-and-elasticsearch", "published_at": "2020-04-28T18:07:22+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511e5289b0", "title": "How to do Port Forwarding with Iptables", "url": "https://ruan.dev/blog/2020/04/27/how-to-do-port-forwarding-with-iptables", "published_at": "2020-04-27T11:42:41+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511efea7ed", "title": "How to set a Static IP in Ubuntu 18", "url": "https://ruan.dev/blog/2020/04/27/how-to-set-a-static-ip-in-ubuntu-18", "published_at": "2020-04-27T11:39:19+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511f0ee067", "title": "Graphing Covid-19 Stats with Grafana and Elasticsearch using Python", "url": "https://ruan.dev/blog/2020/04/26/graphing-covid-19-stats-with-grafana-and-elasticsearch-using-python", "published_at": "2020-04-26T00:24:27+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7511fdb596e", "title": "Nginx Metrics on Prometheus with the Nginx Log Exporter", "url": "https://ruan.dev/blog/2020/04/25/nginx-metrics-on-prometheus-with-the-nginx-log-exporter", "published_at": "2020-04-24T23:42:35+00:00" }, { "id": "01a087d8-8c29-7291-915a-f751201b7619", "title": "IPSec Site to Site VPN with Dynamic IPs with Openswan", "url": "https://ruan.dev/blog/2020/04/19/ipsec-site-to-site-vpn-with-dynamic-ips-with-openswan", "published_at": "2020-04-19T18:58:17+00:00" }, { "id": "01a087d8-8c29-7291-915a-f751204b1ec1", "title": "Persistent Volumes with k3d Kubernetes", "url": "https://ruan.dev/blog/2020/02/21/persistent-volumes-with-k3d-kubernetes", "published_at": "2020-02-20T22:07:48+00:00" }, { "id": "01a087d8-8c29-7291-915a-f7512071bef2", "title": "Asynchronous Function with OpenFaas", "url": "https://ruan.dev/blog/2020/02/17/python-asynchronous-function-with-openfaas", "published_at": "2020-02-17T21:51:22+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75120d898ef", "title": "Traefik Ingress for OpenFaas on Kubernetes (k3d)", "url": "https://ruan.dev/blog/2020/02/17/traefik-ingress-for-openfaas-on-kubernetes-k3d", "published_at": "2020-02-17T21:36:33+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75121957223", "title": "Install OpenFaas on k3d Kubernetes", "url": "https://ruan.dev/blog/2020/02/12/install-openfaas-on-k3d-kubernetes", "published_at": "2020-02-11T22:57:47+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75122924666", "title": "Lightweight Development Kubernetes Options: k3d", "url": "https://ruan.dev/blog/2020/02/12/lightweight-development-kubernetes-options-k3d", "published_at": "2020-02-11T22:27:00+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75122dd1067", "title": "Run Localstack as a Service Container for AWS Mock Services on Drone CI", "url": "https://ruan.dev/blog/2020/02/04/run-localstack-as-a-service-container-for-aws-mock-services-on-drone-ci", "published_at": "2020-02-04T21:43:30+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75123c1878d", "title": "Run Kubernetes (k3s) as a Service Container on Drone CI", "url": "https://ruan.dev/blog/2020/02/04/run-kubernetes-k3s-as-a-service-container-on-drone-ci", "published_at": "2020-02-04T20:37:06+00:00" }, { "id": "01a087d8-8c29-7291-915a-f75123e8dd74", "title": "Setup Gitea and Drone on Docker 2020 Edition", "url": "https://ruan.dev/blog/2020/02/04/setup-gitea-and-drone-on-docker-2020-edition", "published_at": "2020-02-04T19:58:39+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb77f58477c", "title": "Setup Thanos on Docker: A Highly Available Prometheus", "url": "https://ruan.dev/blog/2020/02/01/setup-thanos-on-docker-a-highly-available-prometheus", "published_at": "2020-01-31T23:28:12+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb77fdf1640", "title": "Save Output to Local File with Ansible", "url": "https://ruan.dev/blog/2020/01/24/save-output-to-local-file-with-ansible", "published_at": "2020-01-24T17:56:01+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb7806affee", "title": "Environment Variables with Ansible", "url": "https://ruan.dev/blog/2020/01/24/environment-variables-with-ansible", "published_at": "2020-01-24T17:28:16+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb780dcf518", "title": "Setup a WireGuard VPN Server on Linux", "url": "https://ruan.dev/blog/2020/01/11/setup-a-wireguard-vpn-server-on-linux", "published_at": "2020-01-11T21:37:03+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb7811ff41f", "title": "Managing Background Processes with Screen", "url": "https://ruan.dev/blog/2020/01/02/managing-background-processes-with-screen", "published_at": "2020-01-02T08:42:54+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb7815bd46e", "title": "2019: My personal highlights for the year", "url": "https://ruan.dev/blog/2020/01/01/2019-my-personal-highlights-for-the-year", "published_at": "2020-01-01T10:23:08+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb781e247e2", "title": "Setting the Correct Service Name in Datadog Logging for Docker Swarm", "url": "https://ruan.dev/blog/2019/12/11/setting-the-correct-service-name-in-datadog-logging-for-docker-swarm", "published_at": "2019-12-11T21:35:53+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78251a9b3", "title": "Setup AWS S3 Cross Account Access", "url": "https://ruan.dev/blog/2019/11/26/setup-aws-s3-cross-account-access", "published_at": "2019-11-26T20:40:12+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb782d3fbc9", "title": "How to Setup VPC Peering on AWS", "url": "https://ruan.dev/blog/2019/11/23/how-to-setup-vpc-peering-on-aws", "published_at": "2019-11-23T07:09:40+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb782f1185a", "title": "How To Deploy a Webapp on a AWS EKS Kubernetes Cluster", "url": "https://ruan.dev/blog/2019/11/17/how-to-deploy-a-webapp-on-a-aws-eks-kubernetes-cluster", "published_at": "2019-11-16T22:21:19+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78357f093", "title": "How To Setup a AWS EKS Kubernetes Cluster", "url": "https://ruan.dev/blog/2019/11/16/how-to-setup-a-aws-eks-kubernetes-cluster", "published_at": "2019-11-16T20:31:36+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78380e00f", "title": "Testing AWS Lambda Functions Locally on Docker with LambCi", "url": "https://ruan.dev/blog/2019/11/14/testing-aws-lambda-functions-locally-on-docker-with-lambci", "published_at": "2019-11-14T21:57:10+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb783b2c718", "title": "Integrating Google OAuth with Traefik", "url": "https://ruan.dev/blog/2019/11/10/integrating-google-oauth-with-traefik", "published_at": "2019-11-10T18:03:06+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb784484fac", "title": "Running VS Code in your Browser with Docker", "url": "https://ruan.dev/blog/2019/09/14/running-vs-code-in-your-browser-with-docker", "published_at": "2019-09-14T10:56:05+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb784b2be42", "title": "Expire Objects in AWS S3 Automatically after 30 Days", "url": "https://ruan.dev/blog/2019/09/12/expire-objects-in-aws-s3-automatically-after-30-days", "published_at": "2019-09-12T20:37:11+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78512b299", "title": "Reindex Elasticsearch Indices with Logstash", "url": "https://ruan.dev/blog/2019/09/08/reindex-elasticsearch-indices-with-logstash", "published_at": "2019-09-08T11:00:59+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb785fe06da", "title": "Deploy a Monitoring Stack on Docker Swarm with Grafana and Prometheus", "url": "https://ruan.dev/blog/2019/09/05/deploy-a-monitoring-stack-on-docker-swarm-with-grafana-and-prometheus", "published_at": "2019-09-04T22:07:52+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb786ac92d6", "title": "Deploy Traefik using Bekker Stacks", "url": "https://ruan.dev/blog/2019/09/04/deploy-traefik-using-bekker-stacks", "published_at": "2019-09-04T19:46:35+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78750d8ec", "title": "AWS S3 KMS and Python for Secrets Management", "url": "https://ruan.dev/blog/2019/09/04/aws-s3-kms-and-python-for-secrets-management", "published_at": "2019-09-04T17:58:45+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb7878f7743", "title": "Making deploying functions even easier with faas-cli up using OpenFaaS", "url": "https://ruan.dev/blog/2019/07/07/making-deploying-functions-even-easier-with-faas-cli-up-using-openfaas", "published_at": "2019-07-07T07:53:59+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb787932e9a", "title": "Using OpenFaas with Amazon DynamoDB", "url": "https://ruan.dev/blog/2019/07/06/using-openfaas-with-amazon-dynamodb", "published_at": "2019-07-06T23:11:23+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb787ea3d93", "title": "Using OpenFaas with Amazon DynamoDB", "url": "https://ruan.dev/blog/2019/07/06/2019-07-06-using-openfaas-with-amazon-dynamodb", "published_at": "2019-07-06T00:00:00+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb788d807bd", "title": "Play with Kinesis Data Streams for Free", "url": "https://ruan.dev/blog/2019/06/22/play-with-kinesis-data-streams-for-free", "published_at": "2019-06-22T21:35:19+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78956dcb2", "title": "Setup Traefik as an Ingress Controller on Kubernetes", "url": "https://ruan.dev/blog/2019/06/10/setup-traefik-as-an-ingress-controller-on-kubernetes", "published_at": "2019-06-10T20:21:36+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78a05bb05", "title": "Testing out Scaleways Kapsule their Kubernetes as a Service offering", "url": "https://ruan.dev/blog/2019/06/10/testing-out-scaleways-kapsule-their-kubernetes-as-a-service-offering", "published_at": "2019-06-10T16:28:45+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78a527665", "title": "Setup a Logstash Server for Amazon Elasticsearch Service and auth with IAM", "url": "https://ruan.dev/blog/2019/06/04/setup-a-logstash-server-for-amazon-elasticsearch-service-and-auth-with-iam", "published_at": "2019-06-04T21:46:27+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78b3eb2a7", "title": "Use Vagrant to Setup a Local Development Environment on Linux", "url": "https://ruan.dev/blog/2019/05/30/use-vagrant-to-setup-a-local-development-environment-on-linux", "published_at": "2019-05-30T19:14:15+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78bd0a70e", "title": "Prometheus Series of Tutorials for your Guide to Epic Metrics", "url": "https://ruan.dev/blog/2019/05/17/prometheus-series-of-tutorials-for-your-guide-to-epic-metrics", "published_at": "2019-05-17T18:24:40+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78ca86707", "title": "Install Blackbox Exporter to Monitor Websites with Prometheus", "url": "https://ruan.dev/blog/2019/05/17/install-blackbox-exporter-to-monitor-websites-with-prometheus", "published_at": "2019-05-17T16:55:15+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78d7c9092", "title": "Install Alertmanager to Alert based on Metrics from Prometheus", "url": "https://ruan.dev/blog/2019/05/17/install-alertmanager-to-alert-based-on-metrics-from-prometheus", "published_at": "2019-05-17T16:49:26+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78e199312", "title": "Install Grafana to Visualize your Metrics from datasources such as Prometheus on Linux", "url": "https://ruan.dev/blog/2019/05/17/install-grafana-to-visualize-your-metrics-from-datasources-such-as-prometheus-on-linux", "published_at": "2019-05-17T16:08:02+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78e403c73", "title": "Install Pushgateway to Expose Metrics to Prometheus", "url": "https://ruan.dev/blog/2019/05/17/install-pushgateway-to-expose-metrics-to-prometheus", "published_at": "2019-05-17T11:04:03+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78e770639", "title": "Running a HA MySQL Galera Cluster on Docker Swarm", "url": "https://ruan.dev/blog/2019/05/10/running-a-ha-mysql-galera-cluster-on-docker-swarm", "published_at": "2019-05-10T11:02:39+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78ec86a5e", "title": "Create Secrets with Vaults Transits Secret Engine", "url": "https://ruan.dev/blog/2019/05/07/create-secrets-with-vaults-transits-secret-engine", "published_at": "2019-05-07T20:31:54+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78f6b119d", "title": "Use the Vault API to Provision App Keys and Create KV Pairs", "url": "https://ruan.dev/blog/2019/05/07/use-the-vault-api-to-provision-app-keys-and-create-kv-pairs", "published_at": "2019-05-07T20:23:10+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb78f97eda4", "title": "Persist Vault Data with Amazon S3 as a Storage Backend", "url": "https://ruan.dev/blog/2019/05/07/persist-vault-data-with-amazon-s3-as-a-storage-backend", "published_at": "2019-05-07T20:01:45+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb790415c8a", "title": "Setup Prometheus and Node Exporter on Ubuntu for Epic Monitoring", "url": "https://ruan.dev/blog/2019/05/07/setup-prometheus-and-node-exporter-on-ubuntu-for-epic-monitoring", "published_at": "2019-05-07T13:55:37+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb790f801c2", "title": "How to fix the following signatures couldnt be verified because the public key is not available with apt", "url": "https://ruan.dev/blog/2019/05/07/how-to-fix-the-following-signatures-couldnt-be-verified-because-the-public-key-is-not-available-with-apt", "published_at": "2019-05-07T10:16:31+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb7911aa28b", "title": "Setup Hashicorp Vault Server on Docker and a Getting Started CLI Guide", "url": "https://ruan.dev/blog/2019/05/06/setup-hashicorp-vault-server-on-docker-and-cli-guide", "published_at": "2019-05-06T20:49:09+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb791834215", "title": "Using Concourse CI to Deploy to Docker Swarm", "url": "https://ruan.dev/blog/2019/05/04/using-concourse-ci-to-deploy-to-docker-swarm", "published_at": "2019-05-04T21:11:17+00:00" }, { "id": "01a087d8-8c2a-7078-b0e5-3cb7924d637c", "title": "Using MongoDB inside Drone CI Services for Unit Testing", "url": "https://ruan.dev/blog/2019/05/04/using-mongodb-inside-drone-ci-services-for-unit-testing", "published_at": "2019-05-04T18:52:37+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfb69b7e77", "title": "Queries Failing via Beeline due to Anonymous User", "url": "https://ruan.dev/blog/2019/04/28/queries-failing-via-beeline-due-to-anonymous-user", "published_at": "2019-04-28T16:25:12+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfb74a7e9b", "title": "Using Drone CI to Build a Jekyll Site and Deploy to Docker Swarm", "url": "https://ruan.dev/blog/2019/04/23/using-drone-ci-to-build-a-jekyll-site-and-deploy-to-docker-swarm", "published_at": "2019-04-23T21:57:02+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfb77680c4", "title": "Setup a Blog with Hugo", "url": "https://ruan.dev/blog/2019/04/23/setup-a-blog-with-hugo", "published_at": "2019-04-23T09:41:10+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfb7cea74d", "title": "Setup a Drone CICD Environment on Docker with Letsencrypt", "url": "https://ruan.dev/blog/2019/04/18/setup-a-drone-cicd-environment-on-docker-with-letsencrypt", "published_at": "2019-04-18T16:53:49+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfb8223889", "title": "Setup a Slack Webhook for Sending Messages from Applications", "url": "https://ruan.dev/blog/2019/04/18/setup-a-slack-webhook-for-sending-messages-from-applications", "published_at": "2019-04-18T10:07:42+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfb91ac984", "title": "MongoDB Examples with Golang", "url": "https://ruan.dev/blog/2019/04/17/mongodb-examples-with-golang", "published_at": "2019-04-17T12:51:35+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfba05cd75", "title": "SQL Inner Joins Examples with SQLite", "url": "https://ruan.dev/blog/2019/04/06/sql-inner-joins-examples-with-sqlite", "published_at": "2019-04-06T19:47:38+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfba59bc6f", "title": "Install Elasticsearch with Ansible Tutorial", "url": "https://ruan.dev/blog/2019/04/06/install-elasticsearch-with-ansible-tutorial", "published_at": "2019-04-06T19:45:09+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbafcab96", "title": "Elasticsearch Templates Tutorial", "url": "https://ruan.dev/blog/2019/04/06/elasticsearch-templates-tutorial", "published_at": "2019-04-06T19:41:53+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbb03719c", "title": "Reindex your Elasticsearch Indexes Tutorial", "url": "https://ruan.dev/blog/2019/04/06/reindex-your-elasticsearch-indexes-tutorial", "published_at": "2019-04-06T19:37:18+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbbbdca6d", "title": "Shrink your Elasticsearch Index by Reducing the Shard Count with the Shards API", "url": "https://ruan.dev/blog/2019/04/06/shrink-your-elasticsearch-index-by-reducing-the-shard-count-with-the-shards-api", "published_at": "2019-04-06T19:33:48+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbc5a7d76", "title": "Self Hosted Git and CICD Platform with Gitea and Drone on Docker", "url": "https://ruan.dev/blog/2019/04/04/self-hosted-git-and-cicd-platform-with-gitea-and-drone-on-docker", "published_at": "2019-04-04T21:57:16+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbca5b8d9", "title": "Build Small Golang Docker Containers", "url": "https://ruan.dev/blog/2019/04/03/build-small-golang-docker-containers", "published_at": "2019-04-03T12:24:08+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbcdfee27", "title": "Secure your Elasticsearch Cluster with Basic Auth using Nginx and SSL from Letsencrypt", "url": "https://ruan.dev/blog/2019/04/02/secure-your-elasticsearch-cluster-with-basic-auth-using-nginx", "published_at": "2019-04-02T18:55:58+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbd3ef628", "title": "Setup Kibana Dashboards for Nginx log data to understand the behavior", "url": "https://ruan.dev/blog/2019/04/02/setup-kibana-dashboards-for-nginx-log-data-to-understand-the-behavior", "published_at": "2019-04-02T16:34:18+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbd9b2be8", "title": "Setup a 5 Node Highly Available Elasticsearch Cluster", "url": "https://ruan.dev/blog/2019/04/02/setup-a-5-node-highly-available-elasticsearch-cluster", "published_at": "2019-04-02T09:05:19+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbe2ed67a", "title": "Snippet: Create Custom CloudWatch Metrics with Python", "url": "https://ruan.dev/blog/2019/03/28/snippet-create-custom-cloudwatch-metrics-with-python", "published_at": "2019-03-28T12:05:28+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbe30e036", "title": "Concourse Pipeline to Build a Docker Image Automatically on Git Commit", "url": "https://ruan.dev/blog/2019/03/27/concourse-pipeline-to-build-a-docker-image-automatically-on-git-commit", "published_at": "2019-03-27T21:50:54+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbea9289a", "title": "Ship your Logs to Elasticsearch with Filebeat", "url": "https://ruan.dev/blog/2019/03/27/ship-your-logs-to-elasticsearch-with-filebeat", "published_at": "2019-03-27T14:52:21+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbeace5d2", "title": "How to Deploy a Docker Swarm Cluster on Scaleway with Terraform", "url": "https://ruan.dev/blog/2019/03/21/how-to-deploy-a-docker-swarm-cluster-on-scaleway-with-terraform", "published_at": "2019-03-21T06:15:07+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbef470bf", "title": "Deploy Scaleway Servers via the API in Python", "url": "https://ruan.dev/blog/2019/03/20/deploy-scaleway-servers-via-the-api-in-python", "published_at": "2019-03-20T23:04:00+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfbfe08492", "title": "Setup NRPE Client and Server for Monitoring Remote Services in Nagios", "url": "https://ruan.dev/blog/2019/03/18/setup-nrpe-client-and-server-for-monitoring-remote-services-in-nagios", "published_at": "2019-03-18T16:49:59+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfc068634b", "title": "Monitor your First Host and Services with Nagios", "url": "https://ruan.dev/blog/2019/03/18/monitor-your-first-host-and-services-with-nagios", "published_at": "2019-03-18T16:49:23+00:00" }, { "id": "01a087d8-8c2b-70d7-832e-68dfc11ca5b6", "title": "How to Setup the NagiosGraph Plugin on Nagios Monitoring Server", "url": "https://ruan.dev/blog/2019/03/18/how-to-setup-the-nagiosgraph-plugin-on-nagios-monitoring-server", "published_at": "2019-03-18T16:27:11+00:00" } ] posts Claim your blog
Back to ruan.dev
Blog · corpus.blog/blogs/ruan.dev/posts

ruan.dev

ruan.dev

2020

2019