SIG Romeo2: The Hybrid MRDS

https://www.recoilweb.com/wp-content/uploads/2021/04/SIG_Romeo2_00.jpg

We first got eyes-on a concept of the Sig Romeo2 a couple years back and have been anticipating the release ever since. Originally slated for a 2020 release, hammering out the final details and a global pandemic pushed the official release until sometime in 2021. What we have in our hands is marked as an engineering sample, but SIG assures us it’s a good representation of what will be on the shelf.
With the Romeo2, SIG set out to make a true hybrid of a traditional open-emitter sight and a compact sealed reflex sight. Though sealed reflex sights are physically larger, they offer a number of advantages over an open-emitter reflex sight. First and most importantly, the emitter is sealed away from environmental fouling; stray lint or pocket sand can’t block an emitter unless you manage to pile up enough to block the entire window. They’re also easier to clean and can generally be made more durable. But the Sig Romeo2 goes both ways.

Straight from the box you get what appears to be a traditional open-emitter sight that we’ve come to expect from an MRDS. Digging further in you find a shield for the open configuration, a larger shield for sealed configuration, and a polycarbonate lens with an o-rig to make that seal actually happen.

Sig Romeo2
The shields cleverly cantilever from the front and are held in place by two very small fasteners that we’re sure we’ll lose if we blink too slow. Definitely going to recommend the use of appropriate thread locker (such as Loctite 222) for this one.

Also included is a clever multi-tool wrench with a flathead for windage/elevation adjustment, a small torx for the shield screws, and a T-10 bit in a 28in-lb torque limiter. SIG also took the extra step of lasering the proper torque settings on the optic body itself—bravo!
Sig Romeo2 rear sight
There’s an integral rear sight on the Romeo2 that corresponds to a suppressor-height front sight. There are horizontal lines to cut glare, and two perfect divots carved out if you wish to put a drop of paint in them. Brightness selection is performed via two push buttons on the left side. Access to the battery door does not require any special tools nor removal of the optic; a simple push on the recessed button pops open the battery tray.

Sig Romeo2 mounted
In what’s bound to be an upset to current small, sealed reflex sights, the SIG Romeo2 does not require any special footprint. The Romeo2 will fit all SIG Pro footprints, which translates to an awful lot of Leupold Delta Point Pro mounts too. The Picatinny mount we used for this build was for a DPP, as SIG didn’t yet have mounts in stock, and it worked just fine. Some mounts may have to be modified slightly.

It can be set to an auto-off if you so desire, and there’s even a magnetic-off option (with big-name duty holsters on the way).
Sig Romeo2 cover
These power-saving measures are just bonuses though, as the battery life is 25,000 hours on the medium setting (out of 12). It’s a touch lower than we’d use, and we’ll watch what happens real-world. But seeing as how the batteries are both plentiful and easy to swap, it’ll probably be just fine.

Sig Romeo2
There will be plenty that will run the Sig Romeo2 in a traditional style (that felt weird saying about MRDS’) with a pistol and sealed on a subgun. Or the reverse—you can do what you want, and that’s the entire point. If the battery life is as advertised and we don’t lose any screws, we daresay this may be the best red dot for those who can’t make up their minds or swings both ways.

 

Stay tuned to sigsauer.com


MORE ON RED DOT SIGHTS AND OPTICS

Recoil

MRDS: Micro Red Dot Sight Buyer’s Guide

https://www.recoilweb.com/wp-content/uploads/2021/04/MRDS-buyers-guide-cover.jpg

There was a time when even the very best micro red dot sight (MRDS) would only last a couple thousand rounds on a pistol before the violent reciprocation of the slide shook it to pieces. Incremental improvements over the years resulted in some extremely tough and durable sights, some with battery life better measured in years rather than hours. And just as quality red-dot sights for rifles were eventually produced for beer-money buyers, we’re now starting to see the same in the MRDS market.

We decided to focus on budget-friendly dots with a price ceiling of $300. Of course, actual street prices are normally considerably lower. This list is far from all-inclusive and new MRDS options are being released on a regular basis. However, due to the nature of foreign manufacturing, at least some of the “new” options may well be a rebranded variation of something you see here today.

TESTING

We used a modified AF 1951 ISO 12233 test chart to evaluate optics. Not only does this chart show resolution, it also provides distortion information including optical error, chromatic aberration, centering errors, and more. For an MRDS, we focus on three optical issues: magnification, displacement, and color cast.  

MRDS micro red dot buyer's guide diagram

Despite being advertised as 1x, sometimes an optic will slightly magnify or shrink the image seen through the glass. Displacement is the shifting of objects in view, usually vertically with an MRDS but sometimes horizontally. Color cast represents the accuracy of the color rendition of the view through the optic. This happens because special coatings are used to reflect the red (or green) reticle projection back to the shooter; they allow all light sans red to pass through the glass.

Some of these issues sound rather alarming, but odds are your favorite MRDS has some or all of these errors to some degree. Bear in mind that when you’re target-focused and shooting with both eyes open, these flaws are less important than they may seem at first. 

In terms of durability, only time will tell for many of them. Even an optic with the best reputation may fail, so training for a downed-optic is paramount if you’ll be carrying with one. Inexpensive dots can still have a place as a secondary sighting system or on a range or training gun. 

FEATURES

For each optic, we’ll explore listed features and use. Several different mounting footprints are seen across these pages. The current most-popular optical footprint milled into pistol slides is that of the Trijicon RMR, with the Leupold DeltaPoint Pro trailing behind. Other footprints that you’ll see are the RMS Shield (JPoint/DocOptic/FastFire) as well as the RMS-C (for subcompact guns). Those with plate-system guns such as the Glock MOS-series or the FN 509T are able to easily accommodate most optics, whereas others will have to seek out conversion plates or universal adapters if they don’t have a pistol with their mount in-hand. The RMS Shield footprint is gaining traction with subcompact pistols, with some manufacturers using it over the RMS-C when space is available. 


Atibal MRD V3

Dot Size: 3 MOA
Footprint: Shield
Battery Type: CR1632
Battery Life: Up to 05,000 hours
Weight (No Mount): 2.1 ounces
Objective Lens Size: 24 x 19 mm
Dismount to Replace Battery? No, Top Fill
URL: atibal-optics.com
MSRP: $280

Atibal MRD v3 micro red dot sight

In CONCEALMENT Issue 19, we got our first look at a preproduction MRD V3. One of the changes you’ll see between the preproduction and full production is the inclusion of a rubberized cover around the optic window. Though we’re told it helps make the dot even more rugged, we’re sure the wave of cease-and-desist letters from Trijicon to many manufacturers last year may have something to do with it. 

Adjustment is performed with a small flathead. The clicks are both audible and tactile Each click corresponds to 1 MOA of adjustment. 

There are seven brightness settings and no auto-adjust, but it does feature a 12-hour auto-off. The window is one of the roomiest in this article. 

Color rendition is very good. There’s no change to magnification, but some slight vertical refraction is present. 

In terms of batteries, the CR1632 battery used by the MRD V3 isn’t as common as a CR2032, but still easy to find. It also lasts more than five years and is top-fill so it can be replaced without losing zero. 


Burris FastFire3

Dot Size: 3 or 8 MOA
Footprint: Shield
Battery Type: CR1632
Battery Life: Up To 5,000 hours
Weight (No Mount): 0.9 ounce
Objective Lens Size: 21 x 15 mm
Dismount to Replace Battery? No, Top Fill
URL: burrisoptics.com
MSRP: $230

burris fastfire3 micro red dot sight

As you may have divined by the name, Burris has been continually improving and updating their MRDS offerings. Our example is well-used, having spent time on everything from a 22LR Ruger pistol to an offset mount on a scope to an airsoft training gun. 

Adjustment is performed with a small flathead. The 1 MOA clicks are just barely tactile, but you’ll never be able to feel them through gloves. 

There are four brightness settings, including an auto-adjust mode that uses a sensor on the front to determine the proper brightness. The dot is crisp at lower brightness settings but begins to bloom at the highest setting. 

Color rendition is slightly blue. There’s no errant magnification but there’s some vertical refraction present. 

The FF3 uses a CR1632 battery. Battery life is only 5,000 hours so we’re thankful that it can be changed without requiring a re-zero.


Bushnell RXS-250

Dot Size: 4 MOA
Footprint: Deltapoint Pro
Battery Type: CR2032
Battery Life: Up To 50,000 hours
Weight (No Mount): 1.5 ounces
Objective Lens Size: 24 x 17 mm
Dismount to Replace Battery? No, Top-Fill
URL: bushnell.com
MSRP: $250

bushnell rxs 250 mrds

First introduced in fall 2020, the RXS-250 packs a ton of quality into a street price just above $200. It has a ruggedized body without the cheap Chinese anodizing feel of many others on this list. We’ve seen one dropped several times on concrete that was no worse for wear, and we’re told it passes MIL-STD-810 drop testing while mounted on a loaded pistol.

The clicks are both audible and tactile, and each click corresponds to 1 MOA of adjustment. You need a small flathead to make adjustments.

There are 10 brightness settings and no auto-adjust. 

Color rendition is just ever-so-slightly blue but isn’t distracting. Magnification is 1x, but we see some vertical refraction. 

For batteries, no complaints here; not only does the RXS-250 use the common CR2032 battery, it can be replaced without removing the optic and has an anticipated battery life of more than five years. 


Crimson Trace CTS-1250

Dot Size: 3.25 MOA
Footprint: Shield
Battery Type: CR1632
Battery Life: TBD
Weight (No Mount): 1 ounce
Objective Lens Size: 27 x 17 mm
Dismount to Replace Battery? No, Top Fill
URL: crimsontrace.com
MSRP: $230

crimson trace CTS-1250 Micro red dot sight

Though they’re certainly still making lasers, Crimson Trace began dipping their toes into the optics game a couple short years ago. We began seeing their MRDS pop up as OEM options on other pistols (see our review of the XD-S Mod 2 OSP in RECOIL Issue 53), and now they’re enjoying a wider release. It’s so new that at the time of this writing, we don’t even have all of the details of this optic. You’ll note the lack of a hard battery life rating, though undoubtedly by the time of publication it’ll be available (and we’re told should be better measured in years and not hours). 

Adjustments are made with a small flathead. The clicks are both audible and tactile, and each click corresponds to 1MOA of travel. 

There are 10 brightness settings, including three that are NV-compatible. There’s no auto-adjust. 

Color rendition has just a kiss of blue. There’s a slight reduction in magnification and also some horizontal refraction. 

The CTS-1250 uses a CR1632 battery. The optic doesn’t have to be removed to swap the battery.


NC Star FlipDot M2

Dot Size: 3 MOA
Footprint: RMR
Battery Type: CR2032
Battery Life: ???
Weight (No Mount): 1 ounce
Objective Lens Size: 22 x 16 mm
Dismount to Replace Battery? Yes
URL: ncstar.com
MSRP: $100

Nustar flipdot m2

Yes, this is the cheap red dot with a neat flip-out action. This giant ball of fail is so bad even NC Star has discontinued it because of constant issues. It has since been replaced with the FlipDot Pro. What surprised us is that the NC Star FlipDot ships with several mounts, including a Glock dovetail adapter, Glock MOS plate, RMR spacer, and Picatinny mount. As the name implies, the dot can be flipped up by pressing a springform switch.

At this point, we’d normally talk about adjustment, but the lens itself loosened under recoil within a couple shots. Awesome.

Color rendition is blue but not terrible when viewed head-on. Surprisingly, there’s very little in terms of other optical errors. 

For batteries, the FlipDot uses a CR2032. The optic must be removed to re-zero, and no battery life was listed (which doesn’t seem to be a good sign). 

Leave this one for cheesy SyFy channel movies.

nustar flipdot m2 mrds


SIG Sauer Romeo Zero

Dot Size: 3 or 6 MOA
Footprint: RMS-C
Battery Type: CR1632
Battery Life: Up To 20,000 hours
Weight (No Mount): 0.4 ounce
Objective Lens Size: 18.3 x 16.4 mm
Dismount to Replace Battery? Yes
URL: sigsauer.com
MSRP: $220

sig romeo zero

SIG Sauer has long since jumped into the optics game, and they developed the Romeo Zero with their P365 XL in mind (see CONCEALMENT Issue 15). The Romeo Zero is well-sized to ride on top of subcompact pistols as well as 1911s. Though the body is polymer, we’ve seen few complaints regarding durability from those using them every day. 

Adjustments are made with the included hex wrench, but there are no tactile clicks. The Romeo Zero ships optically centered, so it’s not too much of an ordeal.

A standout feature is the integral rear sight; the Romeo Zero will co-witness with standard sights. There are eight brightness settings and no auto-adjust, as well as an auto-off and shake awake. 

Color rendition strays into the blue spectrum. There’s an ever-so-slight reduction in magnification but no refraction.

For batteries, the Romeo Zero uses a CR1632. Though the sight does have to be removed to replace, with its battery life that shouldn’t be too much of an issue.

The SIG Romeo Zero is a set-it-and-forget-it optic. Give your batteries a swap every other year. Interestingly, the Romeo Zero is assembled in Oregon on an automated, robot-equipped production line rather than purely by hand. We toured SIG’s optics manufacturing facility last year and marveled at the robot overlords putting them together.


HEX Optics WASP

Dot Size: 3.5 MOA
Footprint: RMS-C
Battery Type: CR2032
Battery Life:~20,000 hours, real use
Weight (No Mount): 0.7 ounce
Objective Lens Size: 20 x 15 mm
Dismount to Replace Battery? Yes
URL: hexoptics.com
MSRP: $299

hex optics wasp mrds

You probably haven’t heard of Hex Optics before, but you’ve definitely heard of Springfield Armory. Springfield started Hex to not only have OEM options for their own pistol line, but to also sell them independently. Along with the launch of the micro-mini Wasp, another initial offering will be the Dragonfly, a duty or competition model with an RMR footprint. 

A hex wrench is included for adjustments. While there are no tactile or audible clicks, the Wasp ships with an external guide for zero adjustments, similar to the original Burris FastFire series. 

Like the SIG Romeo Zero, the Wasp has an integral rear sight for co-witnessing with standard-height front sights. The body is constructed of T6 6061 aluminum, and there’s no user-selectable brightness — auto-adjust is all you have, and the Wasp is always on. 

Color rendition is excellent. There’s a slight reduction in magnification and some horizontal refraction. 

The Hex Wasp uses the common CR2032 battery, the largest possible that’ll fit into this miniature sight body, and the optic must be removed to replace it. 


Swampfox Liberty

Dot Size: 3 MOA
Footprint: RMR
Battery Type: CR1632
Battery Life: ~9,000 hours, real use
Weight (No Mount): 1.02 ounces
Objective Lens Size: 22 x 15 mm
Dismount to Replace Battery? No, Top Fill
URL: swampfoxoptics.com
MSRP: $249 (plain), $294 (with shield)

swampfox liberty mrds

Swampfox is a newer company, but they’re very ambitious about regularly releasing improved optics. Their first pistol MRDS was the Kingslayer, a not-so-subtle hint at trying to take down the Trijicon RMR, with which it shares a footprint. Their latest CCW-oriented MRDS is the Liberty — little brother to the duty/competition, Justice. 

You need a small flathead screwdriver to make adjustments. Though there’s a guide, adjustments are neither tactile nor audible.

An optional accessory for the Liberty is the Ironsides Shield for extra durability. This stainless shield is designed to route impact stresses from the optic to the footprint itself. There are dual buttons on the left side of the optic to both turn it on and adjust brightness. There are 10 brightness settings and no auto-adjust. After four minutes of no motion, the illuminator will shut off and then instantly wake up with any movement. 

Color rendition is excellent, and there’s an ever-so-slight horizontal refraction present.

For batteries the Swampfox Liberty uses a CR1632 and is replaced from the top with the assistance of a T10 Torx wrench.


MORE ON RED DOT SIGHTS AND OPTICS

Recoil

Weed Eater Slow-Mo Battle

https://theawesomer.com/photos/2021/04/weed_eater_wars_t.jpg

Weed Eater Slow-Mo Battle

Link

Destin from Smarter Every Day and his pals got together for an unusual competition. The goal? Evaluate the power and durability of eight kinds of weed eater lines as they whack into each other at full speed. The battle took place in front of a high-speed camera to see exactly what happened in slow-motion.

The Awesomer

Crowdfunding Smash: The Arc-Shaped Bowio Book Light for Even Illumination

https://s3files.core77.com/blog/images/1182740_81_108609_wsavpmxKA.jpg

To provide evenly-distributed illumination, Czech model painting enthusiast Matyáš Hošek DIY’ed one of the more innovative LED task lights we’ve ever seen:

A similar approach has been adopted by the (unaffiliated) Bowio Book Light, "designed and engineered by readers for readers":

The Bowio is held fast to the book by magnetic flaps on each end. And yes, it works on softcovers as well as hardcovers.

Here the unnamed designer gives you a sub-two-minute rundown of his design and production process:

The Bowio has been an absolute crowdfunding smash, clocking over $1 million with combined Kickstarter and IndieGogo campaigns. The $49 light is expected to ship by November of this year.

Core77

Scan the World Offers 17,000+ Scans of Famous Artworks You Can Download and 3D Print

https://s3files.core77.com/blog/images/1182561_81_108597_j6Yr7guXh.jpg

Nefertiti, David, Venus de Milo, the Great Buddha at Kamakura. These are just a few famous works of art that have been digitally scanned, and the files made freely available online, so anyone can download and 3D print them. Scan the World: The Open Source Museum has made some 17,000 statues, sculptures, structures and artworks available on their site.

This being an open-source operation, they do welcome you to share scans or even just your printed results:

"Scan the World is an ambitious community-built initiative whose mission is to share 3D printable sculpture and cultural artefacts using democratised 3D scanning technologies, producing an extensive ecosystem of free to download digital cultural heritage. In making culture accessible, communities are encouraged to share their scans, stories, and creations with the goal to bring tangible heritage to the masses."

The bulk of the scans are from Western sources and history, but they’ve also set up Scan the World India and Scan the World China sites that are waiting to be populated by volunteers.

Dive in here.

Core77

[How-To] Install a Handguard on an AR-15

https://www.pewpewtactical.com/wp-content/uploads/2021/04/Barrel-installed-2048×2048.jpg

Installing a handguard is one of the steps in building an AR that people seem to fall short of.

The overall process is straightforward, but there are little details in every step that make or break a proper install.

But that’s why you have us, right?

350 legend midwest slh handguard
Are you ready to change things up with a new handguard?

For this article, we’ll cover the steps of installing a handguard on a new receiver using a barrel nut — not a delta ring.

So, let’s get down to the nitty-gritty of installing a handguard on your AR.

Table of Contents

Loading…

Tools You’ll Need

There are a few key tools you’ll need on hand to install your handguard.

Bonus Items

For more parts and tools you might want to have for future tweaks and builds, head over to our AR-15 Parts & Tools List.

Removing Existing Handguard & Hardware

Step 1: Take Off Old Handguard

If you are starting fresh with no handguard, then skip on down to installing your handguard.

However, if you’ve already got a handguard in place that you need to swap out, start here.

Best AR-15 Handguards
Regardless of which handguard you choose, you gotta remove the old one from your AR.

You’ll need to first remove the existing handguard with a handguard removal tool.

Step 2: Separate the Upper & Lower

To make the installation process easier, go ahead and remove the lower receiver and set it aside.

From here, you can use a vise grip to clamp down on the upper receiver.

Step 3: Remove Muzzle Device, Gas Block & Barrel Nut

Continue the disassembly process by removing any existing muzzle device and hardware, gas block, and barrel nut.

You’ll need to tap out the gas tube roll pin with a #2 pin punch. From here, take a look at the front sight gas block. If it has tapered pins, you’ll need to go ahead and drive them out. 

If you opt for a clamp-on style block, use a hex key to loosen the set screws.

Remove the gas tube.

Finally, remove the original barrel nut with an armorer’s wrench.

Then make sure everything is properly cleaned and degreased.

Installing a New Handguard

Step 1: Test Fit Barrel

The first steps of an install will be the foundation for success.

So, let’s start off right by test fitting your barrel into the receiver.

This may require some thermal fitting, depending on the brands you use. As such, I wait until after I test fit before degreasing.

Barrel installed
Barrel installed.

If the barrel installs without any heat needed, remove it, and degrease the receiver threads and the barrel nut for your handguard.

I will note that wearing some sort of latex or synthetic gloves will help to prevent more oil from your skin from corrupting your work.

Step 2: Install Barrel & Apply Aeroshell 33MS/Aeroshell 64

Once the parts are degreased and have dried, install your barrel.

Apply some Aeroshell 33MS/Aeroshell 64 to the receiver threads and the barrel nut threads.

The use of Aeroshell is one detail that is often overlooked.

Aeroshell
Aeroshell

First, the torque values given here are wet values, meaning they need some sort of lubrication to properly achieve those numbers.

Equally as important are fighting galvanic corrosion and making sure the barrel nut doesn’t seize over time.

Galvanic corrosion can occur when two different metals are in contact, and an electrolyte causes one to corrode in preference to the other.

Now, depending on the area of the world you are in, this may not be much of an issue; here in the Nevada desert, it isn’t a huge risk, but I’d rather be safe.

Applying Aeroshell
Applying Aeroshell

One further note: There is a difference between Aeroshell 33MS/Aeroshell 64 and anti-seize, such as that for ball-bearings or Permatex.

Many anti-seize agents contain graphite which is counter-intuitive to what we are trying to do here as graphite can promote galvanic corrosion.

Stick to the proper agent, as Aeroshell is readily available.

9

at Amazon

Prices accurate at time of writing

Prices accurate at time of writing

Step 3: Attach Barrel Nut & Torque Down

After you have properly applied your Aeroshell, the next step is going to be attaching the barrel nut and then torquing it down.

Slide the barrel nut over your barrel and hand tighten it a few turns to get it engaged on the threads.

At this point, I am a huge fan of using the Midwest Industries Upper Receiver Rod for the remainder of the process.

95

at Brownells

Prices accurate at time of writing

Prices accurate at time of writing

With the spine built into the URR, it allows for proper torque without much risk of damaging your barrel index pin or receiver.

Using your armorer’s wrench or a barrel nut wrench that came with your handguard, apply some torque, back it off to loosen, and repeat this a few times to season the threads.

Torquing barrel nut
Torquing barrel nut

After three to five low torque value tightenings, you will hand tighten the barrel nut.

Using a torque wrench, tighten to your final value. This can range from 30- to 80-foot-pounds of torque depending on the barrel nut.

Pro tip: Read the instructions from the manufacturer on the appropriate torque value.

Step 4: Install Gas Block

With your barrel nut properly greased and torqued, the next step is installing your gas block and then your handguard.

Again, there are some small details here that often get missed. They can make a huge difference in the final product.

Checking gas block alignment
Reinstall your gas block and make sure to check its alignment.

For help installing your gas block, check out our article here.

Step 5: Install Handguard

With your gas block properly installed, you’ll slide the handguard over the barrel and gas block, seating it against the receiver.

The number of handguards and styles available in the market results in many variables on this next step.

Double-check the alignment of the handguard to the top Picatinny rail of the receiver.

checking top rail alignment
Checking top rail alignment.

They should line up equally without any change to the angle of the Picatinny rails.

Some handguards use indexing tabs or anti-rotation tabs to keep things aligned. Others use mounting hardware designed to achieve the same result.

Regardless, ensure that the Picatinny rails line up properly before moving on.

Step 6: Secure Handguard

With your handguard indexed properly, so the Picatinny rails line up, you’ll want to secure it with the mounting hardware.

This can vary greatly from one manufacturer to the next but will almost always involve using screws.

Make sure the screws, as well as the screw holes, are properly degreased and dried before moving on.

I will stress one important note for the next step.

Applying blue loctite to mounting screws
Applying blue Loctite to mounting screws.

Thread locker has been an issue of some debate lately. For handguard mounting screws, I have always used Loctite Blue 242 with great success.

Others say you should use Loctite Red 271 or Vibratite VC3.

I have not found heat causing screws to loosen on a handguard to be an issue if properly torqued.

If you do see an issue, use the Red 271 and understand that heat will have to be used if you ever need to change things.

5

at Amazon

Prices accurate at time of writing

Prices accurate at time of writing

The only exception to using thread locker that I have come across is installing the Centurion Arms CMR rails — which I highly recommend.

Installation instructions specifically note that the use of thread locker on mounting screws for this rail will void the warranty. So, again, always read manufacturer instructions before you install.

Using an appropriate thread locker on the mounting screws, you’ll want to install them snug but not torqued down in a criss-cross pattern.

As you install the screws, check to make sure the position of the top rails has not shifted and things still line up.

Proper mounting hardware
Proper mounting hardware

Once all the screws are in and hand snug, you’ll begin the process of torquing them down in the same pattern — still checking the top rail alignment has not shifted. 

The torque value on these screws can vary but usually falls somewhere in the 25- to 45-inch-pounds of torque.

I feel like I’ve said this before, but…read the manufacturer’s installation instructions for proper values.

In some cases — such as the Centurion CMR or the Dirty Bird Industries SMRS — there will not be an alternating pattern to the screws but rather a few on the bottom.

229

at Brownells

Prices accurate at time of writing

Prices accurate at time of writing

So, make sure you know which screws should be tightened down first and to what torque value.

Step 7: Install Muzzle Device & Accessories

With the handguard attached and the mounting hardware torqued down, the only things left are to install the muzzle device and any attachments you desire.

Timing a muzzle device is something that is better suited for another article. But the main point to monitor would be to degrease the barrel thread and muzzle device threads before applying Rocksett. Then torque to manufacturer specifications.

Tested Muzzle Brakes
Needs some recs on the best muzzle brakes? Read our article here!

When installing accessories, have a rough idea of where you want things like foregrips, flashlights, and slight attachment points to go.

Planning out locations before you start installing things ensures they don’t interfere with components under the rail.

I’m here to tell you that size does matter in some cases. People frequently try to install foregrips but end up hitting the gas block with mounting screws.

Sometimes small location changes are required.

Strike Industries LINK Curved Foregrip (2)
Strike Industries Curved Foregrip.

After your components are attached, and thread locker has cured, you are done!

All that’s left to do is toss the lower receiver and upper receiver back together.

Conclusion

Installing a handguard doesn’t have to be a scary process. Using the steps above, you can easily add a handguard to your AR build.

Faxon Firearms Ascent AR-15
Have fun!

Good luck and have fun with your AR build!

As always, feel free to drop questions in the comments sections. Need handguard recommendations? Head over to the Best AR-15 Handguards and for more on AR builds, check out our list of the Best Upgrades to outfit your AR build!

The post [How-To] Install a Handguard on an AR-15 appeared first on Pew Pew Tactical.

Pew Pew Tactical

Deploy using Ploi

https://lorisleiva.com/img/asset/YXNzZXRzL2FydGljbGVzLzIwMjEvMDQxMC1kZXBsb3llci03LXBsb2kvY292ZXIuanBn?p=seo_pro_og&s=e52fb81562c9b7c58b70fe9e1a55d0be

In this series, we’ve seen how to deploy a Laravel application from scratch by creating our server manually. Whilst it’s good to know how to do it ourselves to understand the mechanics of our server, it can be a pain to maintain in the long run.

That’s why SaaS applications such as Laravel Forge and Ploi exist. They provide an abstraction layer between you and your server by automating its provisioning, its maintenance and by allowing you to configure it directly inside a user interface.

This article focuses on creating a server using Ploi and deploying to it using Deployer. The previous one focused on Laravel Forge.

Preparations

Before we start, I’m going to assume you already have a Ploi account and that you’ve configured it appropriately.

If you’re going to follow along, make sure the following points are configured.

  • Add a Digital Ocean provider by generating an API key first. We’ll use Digital Ocean again here to create our server but feel free to choose any of the alternative providers.
  • Add your SSH key to your account. This will ensure your key is automatically added to every server created. Alternatively, make sure you add it to your server configurations after creating it.
  • Add a Git provider to your account. Even though we’ll be deploying using Deployer that already knows your repository URL, we’ll need to provide our repository when creating a site in order to unlock part of the UI.

All of these configurations can be found on your profile pages on Ploi.

Screenshot of the "Profile" page on Ploi

Create your server on Ploi

Alright, let’s get started. We’ll create a new server directly on the Ploi interface.

Select the server provider of your choice — in our case, we’ll use Digital Ocean.

Screenshot of the first section called "Select provider" on the page to create a new server on Ploi.

Then, select your credentials, select “Server” as a “Server type” and fill the rest of the form however you like.

Screenshot of the second section called "Details" on the page to create a new server on Ploi.

Notice how you can select the PHP version of your choice before creating the server. Additionally, you’ll be able to upgrade or downgrade PHP versions later on with only one click. That’s much easier than having to do it ourselves as we did in the second episode of this series.

When you’re done, click “Create server” and you should see a “Server installation” page showing you the progress in percents. This means your server is being created on Digital Ocean and Ploi is running a bunch of scripts on it to install everything we need for our Laravel applications.

Screenshot the server's page on Ploi whilst it is provisioning.

Now this may take a little while so, whilst we’re waiting, let’s point our domain name to our new server.

Configure your domain

As we’ve seen in episode 2, we need to add a record in our DNS configurations for our domain name to point to the IP address of our server.

In this tutorial, we’ve already assigned jollygood.app to the server we manually created in episode 2. Thus, I am going to use the subdomain ploi.jollygood.app to point to our new server created by Ploi. Of course, feel free to use any domains and/or subdomains for your new server.

Screenshot of the Digital Ocean "Domains" page. It shows a new record being created with the "ploi" subdomain, pointing to the new server we created directly on Ploi.

Once that’s done, it may take a few minutes or even hours for the changes to be live so it’s better to do this as soon as we’ve got the IP address of our server. Whilst Ploi will not tell you the IP address of your server until it is fully configured, you should be able to see it fairly quickly on Digital Ocean.

With any luck, the DNS changes should be live by the time the server has finished being configured on Ploi.

Finish configuring your server

As soon as the server has been successfully installed and configured, you should receive an email from Ploi with important and confidential credentials.

Screenshot of the email sent by Ploi after provisioning a server. It contains the following data: "Server IP", "User", "Sudo password", "Database user" and "Database password".

  • The first one is the password you’ll be asked to enter whenever you enter a sudo command on your server.
  • The second one is the database password of the ploi user. We’ll need this to access our production database later on.

Speaking of databases, we’ll need one for our application, so let’s create one right now. On your server page, click on “Databases” on the sidebar and create a new database. We’ll call ours jollygood for this article.

Screenshot of the "Databases" page on Ploi. It shows a "New database" form where only the field "Name" has been filled with "jollygood". The other optional fields "User", "Password" and "Description" are empty.

Add a site to your server

Now that our server has been successfully configured, let’s add a site to it by going on the “Sites” page accessible via the sidebar.

First, click on “Advanced settings” to have access to all fields.

Then, enter the domain of your application that matches the DNS record created on Digital Ocean — in our case ploi.jollygood.app.

Finally — and that’s important — replace the “Web directory” and “Project directory” fields with /current/public and /current respectively. This is because, as we’ve seen in episode 4, when deploying with Deployer, a subfolder named current will be created pointing to the latest stable release. This will ensure Ploi knows where to run commands in our application and update the Nginx configuration accordingly.

Screenshot of the page to create a new site inside a server on Ploi. The fields "Web directory" and "Project directory" are highlighted and contain "/current/public/" and  "/current" respectively.

After clicking on “Add site”, you should see the following page.

Screenshot of the site page after creating it on Ploi. It shows four big buttons: "Install repository", "Install WordPress", "Install OctoberCMS" and "Install Nextcloud".

If we ignore the “1-click installation” options, Ploi is asking us to provide a Git repository so it can clone it inside the server for us.

Technically, we’ve got no need for that since we’ll be deploying using Deployer who already knows our repository URL. However, if we don’t, the user interface for our new site will be locked in this state which is not very helpful to maintain it.

Thus, we’re going to play the game and add our Git repository even though we’ll re-deploy using Deployer in a minute.

Choose the Git provider of your choice and select your repository. There’s no need to tick “Install composer dependencies” since we’re going to re-deploy in a minute.

Screenshot of the site page after selecting "Git Repository" on Ploi.

Next, there’s a little adjustment we need to make to our Nginx configuration file. If you remember, in episode 2, we mentioned that the SCRIPT_FILENAME and DOCUMENT_ROOT FastCGI parameters had to be overridden to use the real absolute path to avoid symlink paths being incorrectly cached. Since Ploi does not expect us to use Deployer by default, its Nginx configuration does not account for that. But that’s fine we can update this directly inside the UI.

On your site’s page, click on “Manage” from the sidebar. From there, you’ll have a bunch of buttons to manage your site including “Edit NGINX configuration”. Click on that button to open a modal allowing you to edit your Nginx config file.

Then, add the following lines after include fastcgi_params and remove the line before it since we’re already overriding it.

- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
+ fastcgi_param DOCUMENT_ROOT $realpath_root;

Screenshot of the "Edit NGINX configuration" modal on Ploi.

After that, make sure to restart Nginx to apply your changes. Go to your server’s page, click on “Manage” on the sidebar and click on the “Restart NGINX” button.

Screenshot of the "Server > Manage" page with the "Restart NGINX" button hightlighted.

If you’re planning on using Deployer for a lot of sites in the future, you may also create a new Nginx template that will be used instead of the default one. To do that, go to your profile’s page, click on “Webserver templates” on the sidebar and create a new template by adding the two lines above and removing the overridden line.

Screenshot of the "Create webserver template" page on Ploi.

Finally, let’s make sure our domain is available via HTTPS. Ploi makes this super easy for us. On your site’s page, click on “SSL” on the sidebar and select “LetsEncrypt”.

Then make sure you enter the right domains and click “Add certificate”. And that’s it.

Screenshot of the "Site > SSL" page on Ploi. "LetsEncrypt" is selected and the domain field contains "ploi.jollygood.app".

A Ploi friendly deploy.yaml

Okay, now that our server and our site are ready, let’s make sure we can deploy using Deployer.

For this article, I will use the same configuration file we ended up with after episode 4. However, I’m going to update the host configurations slightly so it works with Ploi.

  • By default, we can access servers created on Ploi using the ploi user so we’ll use this as remote_user.
  • Then, we’ll use ploi.jollygood.app as the hostname since we’ve created a DNS record that points to the IP address of our server.
  • Finally, Ploi installs our sites in the home directory of the ploi user and uses the site’s domain to name the site’s folder. So we’ll use the same convention here and deploy to /home/ploi/ploi.jollygood.app which can be simplified to ~/.

Additionally, we need to make sure the php_fpm_version matches the PHP version of our server.

Thus, we end up with the following deploy.yaml file.

import:
  - recipe/laravel.php
  - contrib/php-fpm.php
  - contrib/npm.php

config:
  application: 'blog-jollygood'
  repository: '[email protected]:lorisleiva/blog-jollygood.git'
  php_fpm_version: '8.0'

hosts:
  prod:
    remote_user: ploi
    hostname: 'ploi.jollygood.app'
    deploy_path: '~/'

tasks:
  deploy:
    - deploy:prepare
    - deploy:vendors
    - artisan:storage:link
    - artisan:view:cache
    - artisan:config:cache
    - artisan:migrate
    - npm:install
    - npm:run:prod
    - deploy:publish
    - php-fpm:reload
  npm:run:prod:
    script:
      - 'cd && npm run prod'

after:
  deploy:failed: deploy:unlock

Deploy once

Okay now we should be ready to deploy but before we do let’s delete the folder generated by Ploi when we created our site.

Deployer will be generating a different folder structure with a releases folder and a current symlink. If we don’t delete the existing folder, we’ll end up with a strange fusion of Deployer and a traditional deployment.

Let’s SSH into our server by running dep ssh, then go to the home directory ~ and run rm -rf ploi.jollygood.app or whatever your domain is.

Screenshot of the terminal output of "dep ssh", "ls", "rm -rf ploi.jollygood.app", "ls".

Whilst we’re in our server, there’s something extra we should install that was not provided by Ploi out-of-the-box. By default, Deployer uses the acl library to manage permissions which has to be installed on the server. Thus, we need to run the following command on our server to install it. Make sure to provide the sudo password received by email when the server was created.

sudo apt install acl

Alright, now we’re finally ready to deploy. Simply exit the server and run dep deploy. You should see the following familiar console output.

Screenshot of the terminal output of "dep deploy". All tasks ran successfully except for the "artisan:migrate" task showing the warning: "Your .env file is empty! Skipping...".

If you remember, the artisan:migrate did not run because our .env file has been generated in Deployer’s shared folder but it is empty. So let’s fix this.

First, we’ll copy the .env.example file and generate an application key randomly.

# SSH into your server.
dep ssh

# Prepare the .env file.
cp .env.example .env
php artisan key:generate

# Exit your server.
exit

Now, if you remember, in episode 4, we had to edit our .env file directly inside our server using vim.

We can still do that, but Ploi provides a nice interface for us to update our .env directly from their application. Simply go to the “Site > General” page and you should see an “Edit environment” button on the right.

Screenshot of the "Site > General" page on Ploi. The "Edit environment" button is highlighted.

Make sure to update your production variables appropriately and use the database password provided earlier in the email.

Screenshot of the "Environment" modal on Ploi.

Deploy twice

Now that our production environment is ready, let’s deploy a second time to ensure our database is migrated. Simply run dep deploy and with any luck, you should see the following output.

Screenshot of the terminal output of "dep deploy". This time, all tasks ran successfully.

And that’s it! You should now be able to see your application live if you visit its URL. 🥳

Screenshot of a browser visiting the page at ploi.jollygood.app. It shows the boilerplate of a newly created Laravel application.

Update env variables

Okay, we’ve successfully deployed our application using Ploi and Deployer but there are still a couple of points I’d like to mention.

The first point is that, once your application is deployed, you’ll likely want to update some environment variables from time to time

Since Ploi has a dedicated page to do so, it can be easy to forget that our configuration files are cached — due to the artisan:config:cache task we added to our deployment flow.

That means, whenever you update your .env file, the changes won’t be live until the next deployment.

That being said, if you want to regenerate the configuration cache without having to redeploy the application, you may do that by running php artisan config:cache on your server.

A nice touch from Ploi is that it allows you to run such commands directly from the UI. On your site’s page, click on “Laravel” on the sidebar and you’ll have access to many php artisan commands that you can run by clicking a button. You may even add your own commands inside that dashboard by clicking the “Custom commands” button.

In our case, all we need to do is click the config:cache button and our environment variable will be live.

Screenshot of the "Site > Laravel" page on Ploi. It shows a grid of buttons that trigger php artisan commands. The button "config:cache" is highlighted.

About the deploy script

My last point is about the “Deploy Script” available on the “Site > General” page.

If you’ve read the previous article on Laravel Forge, you’ve seen us work out a bit of magic to trigger a Deployer deployment directly from the Laravel Forge interface. Concretely, we ended up with a deploy script calling dep deploy.

Unfortunately, at this time, it is not possible to do that in Ploi since it runs more than our deploy script behind the scenes. If you remove all the lines from the deploy script, you should see the following error fatal: not a git repository (or any of the parent directories): .git. This is because deployed releases don’t have git initialised inside them. Instead, Deployer uses a cached repository inside the .dep folder.

That wasn’t a problem for Laravel Forge since it just executed what we told it to execute. However, Ploi runs some extra commands behind the scenes trying to access git and therefore making this not possible.

On the other hand, it is worth noting that — starting from a certain plan — Ploi supports its own zero-downtime deployment system out-of-the-box. So with Ploi, you could ditch Deployer altogether, click on a button and have zero-downtime deployments configured.

That being said, you’ll need to configure your entire deployment flow inside the deploy script. I prefer using Deployer since it allows us to create powerful deployment flows via reusable recipes and custom tasks written in PHP but — if you have a simple deployment flow — it might be worth considering.

Conclusion

Alright, I hope this article was useful for Ploi users and also for those who are looking for a solution to help them create and maintain servers.

As usual, you can find the deploy.yaml file updated for this episode on GitHub by click on the link below.

See deploy.yaml on GitHub

As an alternative to Ploi, you might also want to consider Laravel Forge which I have talked about in the previous episode.

I have no personal preference between the two and so I’m actually a customer of both because I’m a very indecisive person. 😅 Hopefully, these two articles will help you decide on which one suits you best.

In the next episode, I will provide a complete checklist of this entire series as a gift for my wholesome sponsors. This will be the perfect article to come back to when you’re ready to get your hands dirty and want a quick list of things to do to deploy your Laravel app from scratch.

Laravel News Links